You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2013/07/12 09:08:17 UTC

[01/19] ISIS-463: mothballing BDD viewer

Updated Branches:
  refs/heads/master 78edef50a -> 7276dc0b5


http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/tck/src/test/resources/dtd/xhtml1-strict.dtd
----------------------------------------------------------------------
diff --git a/mothballed/bdd/tck/src/test/resources/dtd/xhtml1-strict.dtd b/mothballed/bdd/tck/src/test/resources/dtd/xhtml1-strict.dtd
new file mode 100644
index 0000000..abced1d
--- /dev/null
+++ b/mothballed/bdd/tck/src/test/resources/dtd/xhtml1-strict.dtd
@@ -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;
+  >
+

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/tck/src/test/resources/viewer/bdd/common/BootstrapInExplorationMode.html
----------------------------------------------------------------------
diff --git a/mothballed/bdd/tck/src/test/resources/viewer/bdd/common/BootstrapInExplorationMode.html b/mothballed/bdd/tck/src/test/resources/viewer/bdd/common/BootstrapInExplorationMode.html
new file mode 100644
index 0000000..0bf58a3
--- /dev/null
+++ b/mothballed/bdd/tck/src/test/resources/viewer/bdd/common/BootstrapInExplorationMode.html
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+  
+         http://www.apache.org/licenses/LICENSE-2.0
+         
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<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" />
+<body>
+
+<p>
+The system:
+</p>
+<ul>
+<li>
+<p concordion:execute="#result=bootstrapIsis(#configDir,#deploymentType)">
+<span concordion:assertTrue="#result">bootstrapped</span> from
+config directory <span concordion:set="#configDir">../quickrun/src/main/resources</span>
+and running in <span concordion:set="#deploymentType">exploration</span>
+mode,
+</p>
+</li>
+<li>
+<p>with services: </p>
+<table concordion:execute="#result=aliasService(#aliasAs, #className)">
+	<tr>
+		<th concordion:set="#className">Class Name</th>
+		<th concordion:set="#aliasAs">aliasAs</th>
+		<th concordion:assertTrue="#result"/>
+	</tr>
+	<tr>
+		<td>objstore.dflt.todo.ToDoItemRepositoryDefault</td>
+		<td>toDoItems</td>
+		<td>ok</td>
+	</tr>
+</table>
+</li>
+</ul>
+
+</body>
+
+</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/tck/src/test/resources/viewer/bdd/common/ToDoItems.html
----------------------------------------------------------------------
diff --git a/mothballed/bdd/tck/src/test/resources/viewer/bdd/common/ToDoItems.html b/mothballed/bdd/tck/src/test/resources/viewer/bdd/common/ToDoItems.html
new file mode 100644
index 0000000..33bc742
--- /dev/null
+++ b/mothballed/bdd/tck/src/test/resources/viewer/bdd/common/ToDoItems.html
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+  
+         http://www.apache.org/licenses/LICENSE-2.0
+         
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<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" />
+<body>
+
+<h3>Operational Data</h3>
+<p>With to do items (<span concordion:set="#className">dom.todo.ToDoItem</span>):
+</p>
+<table isis:execute="#result=setUpObject(#className, #alias, #description, #done)">
+	<tr>
+        <th concordion:set="#alias">Alias</th>
+		<th concordion:set="#description">Description</th>
+		<th concordion:set="#done">Done</th>
+		<th concordion:assertEquals="#result"/>
+	</tr>
+	<tr>
+        <td>item1</td>
+		<td>Buy milk</td>
+		<td>false</td>
+		<td>ok</td>
+	</tr>
+	<tr>
+        <td>item2</td>
+        <td>Pick up laundry</td>
+        <td>false</td>
+        <td>ok</td>
+	</tr>
+	<tr>
+        <td>item3</td>
+        <td>Buy stamps</td>
+        <td>false</td>
+        <td>ok</td>
+	</tr>
+    <tr>
+        <td>item4</td>
+        <td>Write blog post</td>
+        <td>false</td>
+        <td>ok</td>
+    </tr>
+    <tr>
+        <td>item5</td>
+        <td>Organize brown bag</td>
+        <td>false</td>
+        <td>ok</td>
+    </tr>
+</table>
+
+</body>
+</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/tck/src/test/resources/viewer/bdd/concordion.css
----------------------------------------------------------------------
diff --git a/mothballed/bdd/tck/src/test/resources/viewer/bdd/concordion.css b/mothballed/bdd/tck/src/test/resources/viewer/bdd/concordion.css
new file mode 100644
index 0000000..f849431
--- /dev/null
+++ b/mothballed/bdd/tck/src/test/resources/viewer/bdd/concordion.css
@@ -0,0 +1,102 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+* {
+  font-family: Arial;
+}
+body {
+  padding: 32px;  
+}
+pre {
+  padding: 6px 28px 6px 28px;
+  background-color: #E8EEF7;
+}
+pre, pre *, code, code *, kbd {
+  font-family: Courier New, Courier;
+  font-size: 10pt;
+}
+h1, h1 * {
+  font-size: 24pt;
+}
+p, td, th, li, .breadcrumbs {
+  font-size: 10pt;
+}
+p, li {
+  line-height: 140%;
+}
+table {
+  border-collapse: collapse;
+  empty-cells: show;
+  margin: 8px 0px 8px 0px;
+}
+th, td {
+  border: 1px solid black;
+  padding: 3px;
+}
+td {
+  background-color: white;
+  vertical-align: top;
+}
+th {
+  background-color: #C3D9FF;
+}
+li {
+  margin-top: 6px;
+  margin-bottom: 6px; 
+}
+
+
+.example {
+  padding: 2px 12px 6px 12px;
+  border: 1px solid #C3D9FF;
+  margin: 6px 0px 28px 0px;
+  background-color: #F5F9FD;
+}
+.example h3 {
+  margin-top: 8px;
+  margin-bottom: 8px;
+  font-size: 12pt;
+}
+
+.special {
+  font-style: italic;
+}
+
+.idea {
+  font-size: 9pt;
+  color: #888;
+  font-style: italic;	
+}
+.tight li {
+  margin-top: 1px;
+  margin-bottom: 1px; 
+}
+.commentary {
+  float: right;
+  width: 200px;
+  background-color: #ffffd0;
+  padding:8px;
+  border: 3px solid #eeeeb0;	 
+  margin: 10px 0px 10px 10px;	 
+}
+.commentary, .commentary * {
+  font-size: 8pt;
+}
+span {
+  font-style: italic;
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/tck/src/test/resources/viewer/bdd/stories/AllStories.html
----------------------------------------------------------------------
diff --git a/mothballed/bdd/tck/src/test/resources/viewer/bdd/stories/AllStories.html b/mothballed/bdd/tck/src/test/resources/viewer/bdd/stories/AllStories.html
new file mode 100644
index 0000000..39b3793
--- /dev/null
+++ b/mothballed/bdd/tck/src/test/resources/viewer/bdd/stories/AllStories.html
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+  
+         http://www.apache.org/licenses/LICENSE-2.0
+         
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<!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="todo/Index.html">ToDo Item Stories</a></p>
+	</li>
+</ul>
+
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/tck/src/test/resources/viewer/bdd/stories/todo/Fixtures.html
----------------------------------------------------------------------
diff --git a/mothballed/bdd/tck/src/test/resources/viewer/bdd/stories/todo/Fixtures.html b/mothballed/bdd/tck/src/test/resources/viewer/bdd/stories/todo/Fixtures.html
new file mode 100644
index 0000000..b2044e8
--- /dev/null
+++ b/mothballed/bdd/tck/src/test/resources/viewer/bdd/stories/todo/Fixtures.html
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+  
+         http://www.apache.org/licenses/LICENSE-2.0
+         
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<!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-MM-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-03-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/ToDoItems.html">To Do Items</a>.</p>
+	</li>
+</ul>
+
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/tck/src/test/resources/viewer/bdd/stories/todo/Index.html
----------------------------------------------------------------------
diff --git a/mothballed/bdd/tck/src/test/resources/viewer/bdd/stories/todo/Index.html b/mothballed/bdd/tck/src/test/resources/viewer/bdd/stories/todo/Index.html
new file mode 100644
index 0000000..0a43ec4
--- /dev/null
+++ b/mothballed/bdd/tck/src/test/resources/viewer/bdd/stories/todo/Index.html
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+  
+         http://www.apache.org/licenses/LICENSE-2.0
+         
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<!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>ToDo Item Stories</h1>
+
+<ul>
+    <li>
+	<p><a concordion:run="concordion"
+		href="ScenarioMarkItemAsDone.html">mark item as done</a></p>
+	</li>
+</ul>
+
+
+
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/tck/src/test/resources/viewer/bdd/stories/todo/ScenarioMarkItemAsDone.html
----------------------------------------------------------------------
diff --git a/mothballed/bdd/tck/src/test/resources/viewer/bdd/stories/todo/ScenarioMarkItemAsDone.html b/mothballed/bdd/tck/src/test/resources/viewer/bdd/stories/todo/ScenarioMarkItemAsDone.html
new file mode 100644
index 0000000..beff4b2
--- /dev/null
+++ b/mothballed/bdd/tck/src/test/resources/viewer/bdd/stories/todo/ScenarioMarkItemAsDone.html
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+  
+         http://www.apache.org/licenses/LICENSE-2.0
+         
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<!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>Mark Item As Done</h1>
+
+<div class="example">
+
+<h2>Given</h2>
+<p>
+Given <a concordion:run="concordion"
+        href="Fixtures.html">this fixture</a></p>
+
+<p>Locate to-do item:</p>
+<table
+    isis:execute="#result=usingIsisViewerThatArgs(#onObject, #aliasResultAs, #perform, #onMember, #thatIt, #value)">
+    <tr>
+        <th concordion:set="#onObject">on object</th>
+        <th concordion:set="#aliasResultAs">alias result as</th>
+        <th concordion:set="#perform">perform</th>
+        <th concordion:set="#onMember">on member</th>
+        <th concordion:assertEquals="#result" />
+    </tr>
+    <tr>
+        <td>toDoItems</td>
+        <td>listOfItemsBefore</td>
+        <td>invoke action</td>
+        <td>not yet done</td>
+        <td>ok</td>
+    </tr>
+</table>
+
+<p
+    concordion:execute="#result=aliasItemsInList(#listAlias, #title, #aliasAs)">
+... and then alias the '<span concordion:set="#title">Buy milk</span>' item in the returned <span
+    concordion:set="#listAlias">listOfItemsBefore</span> as <span
+    concordion:set="#aliasAs">buyMilkItem</span>; <span
+    concordion:assertEquals="#result">ok</span>.</p>
+
+<p>Confirm to-do item is not done:</p>
+<table
+    isis:execute="#result=usingIsisViewerThatArgs(#onObject, #aliasResultAs, #perform, #onMember, #thatIt, #value)">
+    <tr>
+        <th concordion:set="#onObject">on object</th>
+        <th concordion:set="#aliasResultAs">alias result as</th>
+        <th concordion:set="#perform">perform</th>
+        <th concordion:set="#onMember">on member</th>
+        <th concordion:set="#thatIt">that it</th>
+        <th concordion:set="#value">value</th>
+        <th concordion:assertEquals="#result" />
+    </tr>
+    <tr>
+        <td>buyMilkItem</td>
+        <td></td>
+        <td>check property</td>
+        <td>Done</td>
+        <td>is</td>
+        <td>False</td>
+        <td>ok</td>
+    </tr>
+</table>
+
+
+
+<h2>When</h2>
+
+<p>Mark as done</p>
+<table
+	isis:execute="#result=usingIsisViewerThatArgs(#onObject, #aliasResultAs, #perform, #onMember, #thatIt, #value)">
+	<tr>
+		<th concordion:set="#onObject">on object</th>
+		<th concordion:set="#aliasResultAs">alias result as</th>
+		<th concordion:set="#perform">perform</th>
+		<th concordion:set="#onMember">on member</th>
+		<th concordion:assertEquals="#result" />
+	</tr>
+    <tr>
+        <td>buyMilkItem</td>
+        <td></td>
+        <td>invoke action</td>
+        <td>mark as done</td>
+        <td>ok</td>
+    </tr>
+</table>
+
+<h2>Then</h2>
+<p>Confirm item is done...</p>
+<table
+    isis:execute="#result=usingIsisViewerThatArgs(#onObject, #aliasResultAs, #perform, #onMember, #thatIt, #value)">
+    <tr>
+        <th concordion:set="#onObject">on object</th>
+        <th concordion:set="#aliasResultAs">alias result as</th>
+        <th concordion:set="#perform">perform</th>
+        <th concordion:set="#onMember">on member</th>
+        <th concordion:set="#thatIt">that it</th>
+        <th concordion:set="#value">value</th>
+        <th concordion:assertEquals="#result" />
+    </tr>
+    <tr>
+        <td>buyMilkItem</td>
+        <td></td>
+        <td>check property</td>
+        <td>Done</td>
+        <td>is</td>
+        <td>True</td>
+        <td>ok</td>
+    </tr>
+</table>
+
+<p>... and that when the list of items is obtained again...</p>
+<table
+    isis:execute="#result=usingIsisViewerThatArgs(#onObject, #aliasResultAs, #perform, #onMember, #thatIt, #value)">
+    <tr>
+        <th concordion:set="#onObject">on object</th>
+        <th concordion:set="#aliasResultAs">alias result as</th>
+        <th concordion:set="#perform">perform</th>
+        <th concordion:set="#onMember">on member</th>
+        <th concordion:assertEquals="#result" />
+    </tr>
+    <tr>
+        <td>toDoItems</td>
+        <td>listOfItemsAfter</td>
+        <td>invoke action</td>
+        <td>not yet done</td>
+        <td>ok</td>
+    </tr>
+</table>
+
+<p concordion:execute="#result=checkCollectionDoesNotContain(#listAlias,#alias)">
+... then the <span concordion:set="#alias">buyMilkItem</span> is no 
+longer in that list (<span concordion:set="#listAlias">listOfItemsAfter</span>);
+  <span concordion:assertEquals="#result">ok</span>.
+</p>
+
+<!-- uncomment the line below to run up the DnD viewer -->
+<!-- 
+<p concordion:execute="runViewer()">run viewer</p>
+--></div>
+
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index fb86986..60f7108 100644
--- a/pom.xml
+++ b/pom.xml
@@ -63,11 +63,9 @@
                 <module>component/viewer/scimpi</module>
                 <module>component/viewer/wicket</module>
                 <module>component/viewer/restfulobjects</module>
-                <module>component/viewer/bdd</module>
         
                 <module>example/application/claims</module>
                 <module>example/application/quickstart_scimpi_nosql</module>
-                <module>example/application/quickstart_dnd_junit_bdd</module>
                 <module>example/application/quickstart_wicket_restful_jdo</module>
         
                 <module>example/archetype/quickstart_wicket_restful_jdo</module>


[09/19] ISIS-463: mothballing BDD viewer

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/resources/viewer/bdd/stories/todo/ScenarioMarkItemAsDone.html
----------------------------------------------------------------------
diff --git a/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/resources/viewer/bdd/stories/todo/ScenarioMarkItemAsDone.html b/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/resources/viewer/bdd/stories/todo/ScenarioMarkItemAsDone.html
deleted file mode 100644
index 8ab80c3..0000000
--- a/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/resources/viewer/bdd/stories/todo/ScenarioMarkItemAsDone.html
+++ /dev/null
@@ -1,163 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-         http://www.apache.org/licenses/LICENSE-2.0
-         
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-<!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>Mark Item As Done</h1>
-
-<div class="example">
-
-<h2>Given</h2>
-<p>
-Given <a concordion:run="concordion"
-        href="Fixtures.html">this fixture</a></p>
-
-<p>Locate to-do item:</p>
-<table
-    isis:execute="#result=usingIsisViewerThatArgs(#onObject, #aliasResultAs, #perform, #onMember, #thatIt, #value)">
-    <tr>
-        <th concordion:set="#onObject">on object</th>
-        <th concordion:set="#aliasResultAs">alias result as</th>
-        <th concordion:set="#perform">perform</th>
-        <th concordion:set="#onMember">on member</th>
-        <th concordion:assertEquals="#result" />
-    </tr>
-    <tr>
-        <td>toDoItems</td>
-        <td>listOfItemsBefore</td>
-        <td>invoke action</td>
-        <td>not yet done</td>
-        <td>ok</td>
-    </tr>
-</table>
-
-<p
-    concordion:execute="#result=aliasItemsInList(#listAlias, #title, #aliasAs)">
-... and then alias the '<span concordion:set="#title">Buy milk</span>' item in the returned <span
-    concordion:set="#listAlias">listOfItemsBefore</span> as <span
-    concordion:set="#aliasAs">buyMilkItem</span>; <span
-    concordion:assertEquals="#result">ok</span>.</p>
-
-<p>Confirm to-do item is not done:</p>
-<table
-    isis:execute="#result=usingIsisViewerThatArgs(#onObject, #aliasResultAs, #perform, #onMember, #thatIt, #value)">
-    <tr>
-        <th concordion:set="#onObject">on object</th>
-        <th concordion:set="#aliasResultAs">alias result as</th>
-        <th concordion:set="#perform">perform</th>
-        <th concordion:set="#onMember">on member</th>
-        <th concordion:set="#thatIt">that it</th>
-        <th concordion:set="#value">value</th>
-        <th concordion:assertEquals="#result" />
-    </tr>
-    <tr>
-        <td>buyMilkItem</td>
-        <td></td>
-        <td>check property</td>
-        <td>done</td>
-        <td>is</td>
-        <td>False</td>
-        <td>ok</td>
-    </tr>
-</table>
-
-
-
-<h2>When</h2>
-
-<p>Mark as done</p>
-<table
-	isis:execute="#result=usingIsisViewerThatArgs(#onObject, #aliasResultAs, #perform, #onMember, #thatIt, #value)">
-	<tr>
-		<th concordion:set="#onObject">on object</th>
-		<th concordion:set="#aliasResultAs">alias result as</th>
-		<th concordion:set="#perform">perform</th>
-		<th concordion:set="#onMember">on member</th>
-		<th concordion:assertEquals="#result" />
-	</tr>
-    <tr>
-        <td>buyMilkItem</td>
-        <td></td>
-        <td>invoke action</td>
-        <td>mark as done</td>
-        <td>ok</td>
-    </tr>
-</table>
-
-<h2>Then</h2>
-<p>Confirm item is done...</p>
-<table
-    isis:execute="#result=usingIsisViewerThatArgs(#onObject, #aliasResultAs, #perform, #onMember, #thatIt, #value)">
-    <tr>
-        <th concordion:set="#onObject">on object</th>
-        <th concordion:set="#aliasResultAs">alias result as</th>
-        <th concordion:set="#perform">perform</th>
-        <th concordion:set="#onMember">on member</th>
-        <th concordion:set="#thatIt">that it</th>
-        <th concordion:set="#value">value</th>
-        <th concordion:assertEquals="#result" />
-    </tr>
-    <tr>
-        <td>buyMilkItem</td>
-        <td></td>
-        <td>check property</td>
-        <td>done</td>
-        <td>is</td>
-        <td>True</td>
-        <td>ok</td>
-    </tr>
-</table>
-
-<p>... and that when the list of items is obtained again...</p>
-<table
-    isis:execute="#result=usingIsisViewerThatArgs(#onObject, #aliasResultAs, #perform, #onMember, #thatIt, #value)">
-    <tr>
-        <th concordion:set="#onObject">on object</th>
-        <th concordion:set="#aliasResultAs">alias result as</th>
-        <th concordion:set="#perform">perform</th>
-        <th concordion:set="#onMember">on member</th>
-        <th concordion:assertEquals="#result" />
-    </tr>
-    <tr>
-        <td>toDoItems</td>
-        <td>listOfItemsAfter</td>
-        <td>invoke action</td>
-        <td>not yet done</td>
-        <td>ok</td>
-    </tr>
-</table>
-
-<p concordion:execute="#result=checkCollectionDoesNotContain(#listAlias,#alias)">
-... then the <span concordion:set="#alias">buyMilkItem</span> is no 
-longer in that list (<span concordion:set="#listAlias">listOfItemsAfter</span>);
-  <span concordion:assertEquals="#result">ok</span>.
-</p>
-
-<!-- uncomment the line below to run up the DnD viewer -->
-<!-- 
-<p concordion:execute="runViewer()">run viewer</p>
---></div>
-
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/example/application/quickstart_dnd_junit_bdd/viewer-dnd/config/isis.properties
----------------------------------------------------------------------
diff --git a/example/application/quickstart_dnd_junit_bdd/viewer-dnd/config/isis.properties b/example/application/quickstart_dnd_junit_bdd/viewer-dnd/config/isis.properties
deleted file mode 100644
index 5520af8..0000000
--- a/example/application/quickstart_dnd_junit_bdd/viewer-dnd/config/isis.properties
+++ /dev/null
@@ -1,116 +0,0 @@
-#  Licensed to the Apache Software Foundation (ASF) under one
-#  or more contributor license agreements.  See the NOTICE file
-#  distributed with this work for additional information
-#  regarding copyright ownership.  The ASF licenses this file
-#  to you under the Apache License, Version 2.0 (the
-#  "License"); you may not use this file except in compliance
-#  with the License.  You may obtain a copy of the License at
-#  
-#         http://www.apache.org/licenses/LICENSE-2.0
-#         
-#  Unless required by applicable law or agreed to in writing,
-#  software distributed under the License is distributed on an
-#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-#  KIND, either express or implied.  See the License for the
-#  specific language governing permissions and limitations
-#  under the License.
-
-
-#################################################################################
-#
-# specify system components.
-#
-# The values correspond to the named components in the installer-registry.properties file
-# in the org.apache.isis.runtimes.dflt:runtime JAR (in the org.apache.isis.runtimes.dflt.runtime package)
-#
-# Although all configuration could reside in isis.properties, the recommendation is
-# to split out into component specific files:
-# 
-#    xxx_yyy.properties files
-#
-# where
-#    * xxx is the component type, and
-#    * yyy is the component name.
-#
-# For example, persistor_sql.properties holds configuration information specific to the
-#
-#
-# If the components are changed, also remember to edit pom.xml (further comments can be 
-# found in the persistor_xxx.properties files)
-#
-#################################################################################
-
-#
-# configure the persistor (object store) to use
-#
-# * in-memory   requires no additional configuration, but stores object in-memory.
-#               Only suitable for prototyping
-# 
-# other persistor implementations are not appropriate for the DnD viewer
-#
-
-isis.persistor=in-memory
-#isis.persistor=xml
-
-
-
-
-#################################################################################
-#
-# MetaModel
-#
-# The metamodel typically does not require additional configuration, although
-# the system components (defined above) may refine the metamodel for their needs.
-#
-#################################################################################
-
-
-#
-# additional programming model facets
-#
-
-#isis.reflector.facets.include=
-#isis.reflector.facets.exclude=
-
-
-#
-# metamodel validator
-#
-
-#isis.reflector.validator=
-
-
-
-#################################################################################
-#
-# Application Services and fixtures
-#
-#################################################################################
-
-#
-# Specify the domain services.
-# 
-# These are the most important configuration properties in the system, as they define
-# the set of the classes for Isis to instantiate as domain service singletons.
-# From these domain service instances the rest of the metamodel is discovered, while the 
-# end-user gains access to other domain objects by invoking the actions of the domain services.
-#
-# The implementations depend on the configured (see isis.persistor above) 
-#
-
-# if using the in-memory object store
-isis.services.prefix = dom
-isis.services = todo.ToDoItems
-
-
-
-
-#
-# Specify the (optional) test fixtures
-#
-# Fixtures are used to seed the object store with an initial set of data.  For the 
-# in-memory object store, the fixtures are installed on every run.
-#
-isis.fixtures.prefix= fixture
-isis.fixtures= todo.ToDoItemsFixture
-

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/example/application/quickstart_dnd_junit_bdd/viewer-dnd/config/logging.properties
----------------------------------------------------------------------
diff --git a/example/application/quickstart_dnd_junit_bdd/viewer-dnd/config/logging.properties b/example/application/quickstart_dnd_junit_bdd/viewer-dnd/config/logging.properties
deleted file mode 100644
index 5210379..0000000
--- a/example/application/quickstart_dnd_junit_bdd/viewer-dnd/config/logging.properties
+++ /dev/null
@@ -1,34 +0,0 @@
-#  Licensed to the Apache Software Foundation (ASF) under one
-#  or more contributor license agreements.  See the NOTICE file
-#  distributed with this work for additional information
-#  regarding copyright ownership.  The ASF licenses this file
-#  to you under the Apache License, Version 2.0 (the
-#  "License"); you may not use this file except in compliance
-#  with the License.  You may obtain a copy of the License at
-#  
-#         http://www.apache.org/licenses/LICENSE-2.0
-#         
-#  Unless required by applicable law or agreed to in writing,
-#  software distributed under the License is distributed on an
-#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-#  KIND, either express or implied.  See the License for the
-#  specific language governing permissions and limitations
-#  under the License.
-
-
-#
-# Isis uses log4j is used to provide system logging
-#
-log4j.rootCategory=INFO, Console
-
-# The console appender
-log4j.appender.Console=org.apache.log4j.ConsoleAppender
-log4j.appender.Console.target=System.out
-log4j.appender.Console.layout=org.apache.log4j.PatternLayout
-log4j.appender.Console.layout.ConversionPattern=%d{ABSOLUTE}  [%-20c{1} %-10t %-5p]  %m%n
-
-log4j.appender.File=org.apache.log4j.RollingFileAppender
-log4j.appender.File.file=isis.log
-log4j.appender.File.append=false
-log4j.appender.File.layout=org.apache.log4j.PatternLayout
-log4j.appender.File.layout.ConversionPattern=%d [%-20c{1} %-10t %-5p]  %m%n

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/example/application/quickstart_dnd_junit_bdd/viewer-dnd/config/persistor_in-memory.properties
----------------------------------------------------------------------
diff --git a/example/application/quickstart_dnd_junit_bdd/viewer-dnd/config/persistor_in-memory.properties b/example/application/quickstart_dnd_junit_bdd/viewer-dnd/config/persistor_in-memory.properties
deleted file mode 100644
index f35b5bc..0000000
--- a/example/application/quickstart_dnd_junit_bdd/viewer-dnd/config/persistor_in-memory.properties
+++ /dev/null
@@ -1,25 +0,0 @@
-#  Licensed to the Apache Software Foundation (ASF) under one
-#  or more contributor license agreements.  See the NOTICE file
-#  distributed with this work for additional information
-#  regarding copyright ownership.  The ASF licenses this file
-#  to you under the Apache License, Version 2.0 (the
-#  "License"); you may not use this file except in compliance
-#  with the License.  You may obtain a copy of the License at
-#  
-#         http://www.apache.org/licenses/LICENSE-2.0
-#         
-#  Unless required by applicable law or agreed to in writing,
-#  software distributed under the License is distributed on an
-#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-#  KIND, either express or implied.  See the License for the
-#  specific language governing permissions and limitations
-#  under the License.
-
-#
-# configuration file for the In-memory objectstore
-#
-
-
-#
-# (intentionally empty)
-#

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/example/application/quickstart_dnd_junit_bdd/viewer-dnd/config/persistor_xml.properties
----------------------------------------------------------------------
diff --git a/example/application/quickstart_dnd_junit_bdd/viewer-dnd/config/persistor_xml.properties b/example/application/quickstart_dnd_junit_bdd/viewer-dnd/config/persistor_xml.properties
deleted file mode 100644
index d5e0466..0000000
--- a/example/application/quickstart_dnd_junit_bdd/viewer-dnd/config/persistor_xml.properties
+++ /dev/null
@@ -1,22 +0,0 @@
-#  Licensed to the Apache Software Foundation (ASF) under one
-#  or more contributor license agreements.  See the NOTICE file
-#  distributed with this work for additional information
-#  regarding copyright ownership.  The ASF licenses this file
-#  to you under the Apache License, Version 2.0 (the
-#  "License"); you may not use this file except in compliance
-#  with the License.  You may obtain a copy of the License at
-#  
-#         http://www.apache.org/licenses/LICENSE-2.0
-#         
-#  Unless required by applicable law or agreed to in writing,
-#  software distributed under the License is distributed on an
-#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-#  KIND, either express or implied.  See the License for the
-#  specific language governing permissions and limitations
-#  under the License.
-
-#
-# configuration file for the XML objectstore
-#
-
-isis.xmlos.dir=/tmp/isis-quickstart/persistor-xml/data
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/example/application/quickstart_dnd_junit_bdd/viewer-dnd/config/viewer_dnd.properties
----------------------------------------------------------------------
diff --git a/example/application/quickstart_dnd_junit_bdd/viewer-dnd/config/viewer_dnd.properties b/example/application/quickstart_dnd_junit_bdd/viewer-dnd/config/viewer_dnd.properties
deleted file mode 100644
index 80de8f1..0000000
--- a/example/application/quickstart_dnd_junit_bdd/viewer-dnd/config/viewer_dnd.properties
+++ /dev/null
@@ -1,22 +0,0 @@
-#  Licensed to the Apache Software Foundation (ASF) under one
-#  or more contributor license agreements.  See the NOTICE file
-#  distributed with this work for additional information
-#  regarding copyright ownership.  The ASF licenses this file
-#  to you under the Apache License, Version 2.0 (the
-#  "License"); you may not use this file except in compliance
-#  with the License.  You may obtain a copy of the License at
-#  
-#         http://www.apache.org/licenses/LICENSE-2.0
-#         
-#  Unless required by applicable law or agreed to in writing,
-#  software distributed under the License is distributed on an
-#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-#  KIND, either express or implied.  See the License for the
-#  specific language governing permissions and limitations
-#  under the License.
-
-#
-# configuration file for the DnD viewer
-#
-
-# (intentionally empty)

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/example/application/quickstart_dnd_junit_bdd/viewer-dnd/ide/eclipse/launch/quickstart_dnd_junit_bdd-viewer-dnd.launch
----------------------------------------------------------------------
diff --git a/example/application/quickstart_dnd_junit_bdd/viewer-dnd/ide/eclipse/launch/quickstart_dnd_junit_bdd-viewer-dnd.launch b/example/application/quickstart_dnd_junit_bdd/viewer-dnd/ide/eclipse/launch/quickstart_dnd_junit_bdd-viewer-dnd.launch
deleted file mode 100644
index 489d335..0000000
--- a/example/application/quickstart_dnd_junit_bdd/viewer-dnd/ide/eclipse/launch/quickstart_dnd_junit_bdd-viewer-dnd.launch
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
-<listEntry value="/org.apache.isis.runtimes.dflt.runtime/src/main/java/org/apache/isis/Isis.java"/>
-</listAttribute>
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
-<listEntry value="1"/>
-</listAttribute>
-<mapAttribute key="org.eclipse.debug.core.preferred_launchers">
-<mapEntry key="[debug]" value="org.eclipse.jdt.launching.localJavaApplication"/>
-<mapEntry key="[run]" value="org.eclipse.jdt.launching.localJavaApplication"/>
-</mapAttribute>
-<stringAttribute key="org.eclipse.debug.core.source_locator_id" value="org.eclipse.jdt.launching.sourceLocator.JavaSourceLookupDirector"/>
-<booleanAttribute key="org.eclipse.jdt.debug.ui.INCLUDE_EXTERNAL_JARS" value="true"/>
-<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.m2e.launchconfig.classpathProvider"/>
-<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.apache.isis.Isis"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="--type exploration --viewer dnd"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="quickstart_dnd_junit_bdd-viewer-dnd"/>
-<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.m2e.launchconfig.sourcepathProvider"/>
-</launchConfiguration>

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/example/application/quickstart_dnd_junit_bdd/viewer-dnd/pom.xml
----------------------------------------------------------------------
diff --git a/example/application/quickstart_dnd_junit_bdd/viewer-dnd/pom.xml b/example/application/quickstart_dnd_junit_bdd/viewer-dnd/pom.xml
deleted file mode 100644
index 4861b5a..0000000
--- a/example/application/quickstart_dnd_junit_bdd/viewer-dnd/pom.xml
+++ /dev/null
@@ -1,160 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-         http://www.apache.org/licenses/LICENSE-2.0
-         
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.isis.example.application</groupId>
-        <artifactId>quickstart_dnd_junit_bdd</artifactId>
-        <version>1.0.0-SNAPSHOT</version>
-    </parent>
-
-    <artifactId>quickstart_dnd_junit_bdd-viewer-dnd</artifactId>
-    
-    <name>Quickstart (DnD/Junit/BDD) Viewer DnD</name>
-    
-    <description>This module runs Isis' DnD viewer, intended for exploration, prototyping and
-    design.  By default the viewer is configured to run with the in-memory object store, 
-    meaning that changes will not be persisted from one run to the next; initial seed data
-    is read in from the isis.fixtures key in the isis.properties config file.  Alternatively,
-    the viewer may be configured to run with the XML object store, which persists changes to set of 
-    XML files.</description>
-
-    <!--
-    can run the dnd using either:
-    mvn antrun:run
-    or
-    mvn test -P dnd
-    -->
-
-	<properties>
-        <siteBaseDir>..</siteBaseDir>
-	</properties>
-    
-    <build>
-        <plugins>
-            <!-- mvn package -->
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-shade-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <phase>package</phase>
-                        <goals>
-                            <goal>shade</goal>
-                        </goals>
-                        <configuration>
-                            <transformers>
-                                <transformer
-                                    implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
-                                    <mainClass>org.apache.isis.Isis</mainClass>
-                                </transformer>
-                            </transformers>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-antrun-plugin</artifactId>
-                <configuration>
-                    <tasks>
-                        <exec executable="java" failonerror="true">
-                            <arg value="-jar"/>
-                            <arg value="${project.build.directory}/${project.build.finalName}.jar"/>
-                            <arg value="-type"/>
-                            <arg value="exploration"/>
-                            <arg value="-viewer"/>
-                            <arg value="dnd"/>
-                        </exec>
-                    </tasks>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-
-    <dependencies>
-        <!-- other modules in this project -->
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>quickstart_dnd_junit_bdd-fixture</artifactId>
-        </dependency>
-
-        <!-- isis core -->
-        <dependency>
-            <groupId>org.apache.isis.core</groupId>
-            <artifactId>isis-core-metamodel</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.isis.core</groupId>
-            <artifactId>isis-core-runtime</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.isis.core</groupId>
-            <artifactId>isis-core-bytecode-cglib</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.isis.core</groupId>
-            <artifactId>isis-core-objectstore</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.isis.core</groupId>
-            <artifactId>isis-core-profilestore</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.isis.core</groupId>
-            <artifactId>isis-core-security</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.isis.security</groupId>
-            <artifactId>isis-security-file</artifactId>
-        </dependency>
-        
-        <!-- isis viewers -->
-        <dependency>
-            <groupId>org.apache.isis.viewer</groupId>
-            <artifactId>isis-viewer-dnd-impl</artifactId>
-        </dependency>
-
-    </dependencies>
-    
-    <profiles>
-    	<profile>
-    		<id>dnd</id>
-			<build>
-				<plugins>
-		            <plugin>
-		                <groupId>org.apache.maven.plugins</groupId>
-		                <artifactId>maven-antrun-plugin</artifactId>
-                        <executions>
-		                    <execution>
-		                        <phase>test</phase>
-		                        <goals>
-		                            <goal>run</goal>
-		                        </goals>
-							</execution>
-                        </executions>
-		            </plugin>
-				</plugins>
-			</build>    		
-    	</profile>
-    </profiles>
-
-</project>

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/NOTICE
----------------------------------------------------------------------
diff --git a/mothballed/bdd/NOTICE b/mothballed/bdd/NOTICE
new file mode 100644
index 0000000..ba21d0c
--- /dev/null
+++ b/mothballed/bdd/NOTICE
@@ -0,0 +1,7 @@
+Apache Isis
+Copyright 2010-2013 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
+
+

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/pom.xml
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/pom.xml b/mothballed/bdd/common/pom.xml
new file mode 100755
index 0000000..2b8fcd8
--- /dev/null
+++ b/mothballed/bdd/common/pom.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+  
+         http://www.apache.org/licenses/LICENSE-2.0
+         
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+	<parent>
+	    <groupId>org.apache.isis.viewer</groupId>
+	    <artifactId>isis-viewer-bdd</artifactId>
+	    <version>1.0.0-SNAPSHOT</version>
+	</parent>
+	
+	<artifactId>isis-viewer-bdd-common</artifactId>
+	<name>Isis BDD Viewer (Common)</name>
+
+    <properties>
+		<siteBaseDir>..</siteBaseDir>
+		<relativeUrl>common/</relativeUrl>
+	</properties>
+
+    <!-- used in Site generation for relative references. -->
+    <url>http://isis.apache.org/${relativeUrl}</url>
+
+	<dependencies>
+		<dependency>
+		    <groupId>org.apache.isis.core</groupId>
+		    <artifactId>isis-core-metamodel</artifactId>
+		</dependency>
+		
+		<dependency>
+			<groupId>org.apache.isis.core</groupId>
+			<artifactId>isis-core-runtime</artifactId>
+		</dependency>
+        <dependency>
+            <groupId>org.apache.isis.core</groupId>
+            <artifactId>isis-core-objectstore</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.isis.core</groupId>
+            <artifactId>isis-core-profilestore</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.isis.core</groupId>
+            <artifactId>isis-core-security</artifactId>
+        </dependency>
+	</dependencies>
+</project>      

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/AliasRegistry.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/AliasRegistry.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/AliasRegistry.java
new file mode 100644
index 0000000..a4cfdd8
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/AliasRegistry.java
@@ -0,0 +1,46 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common;
+
+import java.util.Map;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+
+public interface AliasRegistry extends Iterable<Map.Entry<String, ObjectAdapter>> {
+
+    public ObjectAdapter getAliased(final String alias);
+
+    public String getAlias(final ObjectAdapter adapter);
+
+    /**
+     * Holds a new {@link NakedObject adapter}, automatically assigning it a new
+     * heldAs alias.
+     */
+    public String aliasPrefixedAs(final String prefix, final ObjectAdapter adapter);
+
+    /**
+     * Holds a new {@link ObjectAdapter}
+     */
+    public void aliasAs(final String alias, final ObjectAdapter adapter);
+
+    void aliasService(final String aliasAs, final String className) throws ScenarioValueException;
+
+    public void clear();
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/CellBinding.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/CellBinding.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/CellBinding.java
new file mode 100644
index 0000000..0e7a055
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/CellBinding.java
@@ -0,0 +1,230 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.isis.core.commons.lang.StringUtils;
+
+public abstract class CellBinding {
+
+    private boolean found = false;
+    private int column = -1;
+
+    private ScenarioCell headCell = null;
+    private ScenarioCell currentCell;
+
+    private final String name;
+    private final List<String> headTexts;
+    private final boolean autoCreate;
+    private final boolean ditto;
+    private final boolean optional;
+
+    // ///////////////////////////////////////////////////////////////
+    // Constructor
+    // ///////////////////////////////////////////////////////////////
+
+    protected CellBinding(final String name, final boolean autoCreate, final boolean ditto, final boolean optional, final String[] headTexts) {
+        this.name = name;
+        this.autoCreate = autoCreate;
+        this.ditto = ditto;
+        this.optional = optional;
+        if (headTexts.length == 0) {
+            throw new IllegalArgumentException("Require at least one heading text");
+        }
+        final List<String> headTextList = new ArrayList<String>();
+        for (final String headText : headTexts) {
+            headTextList.add(StringUtils.camel(headText).toLowerCase());
+        }
+        this.headTexts = headTextList;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public boolean isOptional() {
+        return optional;
+    }
+
+    public boolean isAutoCreate() {
+        return autoCreate;
+    }
+
+    private void ditto(final ScenarioCell previousCell) {
+        copy(previousCell, getCurrentCell());
+    }
+
+    public List<String> getHeadTexts() {
+        return headTexts;
+    }
+
+    public boolean isDitto() {
+        return ditto;
+    }
+
+    // ///////////////////////////////////////////////////////////////
+    // matches (for searching head column)
+    // ///////////////////////////////////////////////////////////////
+
+    /**
+     * For the BDD framework integration to search whether this particular
+     * {@link CellBinding} corresponds to a particular head text.
+     */
+    public boolean matches(final String candidateText) {
+        final String candidateTextCamelLower = StringUtils.camel(candidateText).toLowerCase();
+        for (final String headText : getHeadTexts()) {
+            if (headText.equalsIgnoreCase(candidateTextCamelLower)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    // ///////////////////////////////////////////////////////////////
+    // set Head Column
+    // ///////////////////////////////////////////////////////////////
+
+    /**
+     * For the BDD framework integration to indicate the head column, but
+     * without no {@link #getHeadCell() head cell}.
+     */
+    public void setHeadColumn(final int column) {
+        this.found = true;
+        setColumnAndHeadCell(column, null);
+    }
+
+    /**
+     * For the BDD framework integration to indicate that the head cell has been
+     * found.
+     */
+    public void setHeadColumn(final int column, final ScenarioCell headCell) {
+        this.found = true;
+        setColumnAndHeadCell(column, headCell);
+    }
+
+    /**
+     * For the BDD framework integration to indicate that the head cell was not
+     * found and has been created.
+     */
+    public void createHeadCell(final int column, final ScenarioCell headCell) {
+        setColumnAndHeadCell(column, headCell);
+    }
+
+    /**
+     * Whether the head cell was found.
+     */
+    public boolean isFound() {
+        return found;
+    }
+
+    /**
+     * The column that is found, if any.
+     */
+    public int getColumn() {
+        return column;
+    }
+
+    /**
+     * The head cell with the text, if any.
+     */
+    public ScenarioCell getHeadCell() {
+        return headCell;
+    }
+
+    private void setColumnAndHeadCell(final int column, final ScenarioCell headCell) {
+        this.column = column;
+        this.headCell = headCell;
+    }
+
+    /**
+     * Holds onto a current (body) cell.
+     */
+    public ScenarioCell getCurrentCell() {
+        return currentCell;
+    }
+
+    /**
+     * @see #getCurrentCell()
+     */
+    public void setCurrentCell(final ScenarioCell cell) {
+        this.currentCell = cell;
+    }
+
+    // ///////////////////////////////////////////////////////////////
+    // capture current value
+    // ///////////////////////////////////////////////////////////////
+
+    private boolean dittoed;
+
+    /**
+     * Captures the current value, but also checking that the column in which
+     * the {@link ScenarioCell value} has been provided corresponds to the
+     * {@link #getColumn() column} of this binding.
+     * 
+     * @see #captureCurrent(ScenarioCell)
+     */
+    public void captureCurrent(final ScenarioCell cell, final int column) {
+        if (column != getColumn()) {
+            return;
+        }
+        captureCurrent(cell);
+    }
+
+    /**
+     * Captures the current {@link ScenarioCell value} for this binding.
+     * 
+     * <p>
+     * For implementations where we already know that the value provided is for
+     * this particular binding.
+     */
+    public void captureCurrent(final ScenarioCell cell) {
+        final ScenarioCell previousCell = getCurrentCell();
+        setCurrentCell(cell);
+        final boolean shouldDitto = StringUtils.isNullOrEmpty(cell.getText());
+        final boolean canDitto = isDitto() && previousCell != null;
+        if (shouldDitto && canDitto) {
+            ditto(previousCell);
+            dittoed = true;
+        } else {
+            dittoed = false;
+        }
+    }
+
+    /**
+     * Whether the most recent call to {@link #captureCurrent(ScenarioCell)}
+     * resulted in a ditto.
+     */
+    public boolean isDittoed() {
+        return dittoed;
+    }
+
+    protected abstract void copy(final ScenarioCell from, ScenarioCell to);
+
+    // ///////////////////////////////////////////////////////////////
+    // toString
+    // ///////////////////////////////////////////////////////////////
+
+    @Override
+    public String toString() {
+        return found ? ("found, current=" + getCurrentCell().getText()) : "not found";
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/CellBindingDefault.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/CellBindingDefault.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/CellBindingDefault.java
new file mode 100644
index 0000000..254f312
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/CellBindingDefault.java
@@ -0,0 +1,68 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common;
+
+public class CellBindingDefault extends CellBinding {
+
+    public static class Builder {
+        private final String name;
+        private final String[] headText;
+        private boolean autoCreate;
+        private boolean ditto;
+        private boolean optional;
+
+        public Builder(final String name, final String... headText) {
+            this.name = name;
+            this.headText = headText;
+        }
+
+        public Builder autoCreate() {
+            this.autoCreate = true;
+            return this;
+        }
+
+        public Builder ditto() {
+            this.ditto = true;
+            return this;
+        }
+
+        public Builder optional() {
+            this.optional = true;
+            return this;
+        }
+
+        public CellBindingDefault build() {
+            return new CellBindingDefault(name, autoCreate, ditto, optional, headText);
+        }
+    }
+
+    public static Builder builder(final String name, final String... headText) {
+        return new Builder(name, headText);
+    }
+
+    private CellBindingDefault(final String name, final boolean autoCreate, final boolean ditto, final boolean optional, final String[] headTexts) {
+        super(name, autoCreate, ditto, optional, headTexts);
+    }
+
+    @Override
+    protected void copy(final ScenarioCell from, final ScenarioCell to) {
+        to.setText(from.getText());
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/IsisViewerConstants.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/IsisViewerConstants.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/IsisViewerConstants.java
new file mode 100644
index 0000000..9167111
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/IsisViewerConstants.java
@@ -0,0 +1,82 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+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;
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/Scenario.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/Scenario.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/Scenario.java
new file mode 100644
index 0000000..66420b9
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/Scenario.java
@@ -0,0 +1,312 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common;
+
+import static org.apache.isis.core.commons.ensure.Ensure.ensureThatArg;
+import static org.hamcrest.CoreMatchers.anyOf;
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.CoreMatchers.is;
+
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+
+import org.apache.isis.applib.fixtures.LogonFixture;
+import org.apache.isis.core.commons.config.IsisConfiguration;
+import org.apache.isis.core.commons.config.IsisConfigurationBuilder;
+import org.apache.isis.core.commons.config.IsisConfigurationBuilderFileSystem;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.adapter.oid.AggregatedOid;
+import org.apache.isis.core.profilestore.InMemoryUserProfileStoreInstaller;
+import org.apache.isis.core.progmodel.facets.value.ValueSemanticsProviderAbstractTemporal;
+import org.apache.isis.core.runtime.fixtures.FixturesInstallerNoop;
+import org.apache.isis.core.runtime.installerregistry.InstallerLookup;
+import org.apache.isis.core.runtime.installers.InstallerLookupDefault;
+import org.apache.isis.core.runtime.runner.IsisInjectModule;
+import org.apache.isis.core.runtime.system.DeploymentType;
+import org.apache.isis.core.runtime.system.IsisSystem;
+import org.apache.isis.core.runtime.system.SystemConstants;
+import org.apache.isis.core.runtime.system.context.IsisContext;
+import org.apache.isis.core.runtime.system.internal.InitialisationSession;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
+import org.apache.isis.viewer.bdd.common.components.BddAuthenticationManagerInstaller;
+import org.apache.isis.viewer.bdd.common.components.BddInMemoryPersistenceMechanismInstaller;
+import org.apache.isis.viewer.bdd.common.parsers.DateParser;
+import org.apache.isis.viewer.bdd.common.story.bootstrapping.OpenSession;
+import org.apache.isis.viewer.bdd.common.story.bootstrapping.RunViewer;
+import org.apache.isis.viewer.bdd.common.story.bootstrapping.SetClock;
+import org.apache.isis.viewer.bdd.common.story.bootstrapping.ShutdownIsis;
+import org.apache.isis.viewer.bdd.common.story.registries.AliasRegistryDefault;
+import org.apache.isis.viewer.bdd.common.story.registries.AliasRegistryHolder;
+
+/**
+ * Holds the bootstrapped {@link IsisSystem} and provides access to the
+ * {@link AliasRegistry aliases}.
+ *
+ * <p>
+ * Typically held in a thread-local by the test framework, acting as a context
+ * to the story.
+ *
+ * <p>
+ * Implementation note: this class directly implements {@link AliasRegistrySpi},
+ * though delegates to an underlying {@link AliasRegistryDefault}. This is
+ * needed because the underlying {@link AliasRegistry} can change on
+ * {@link #switchUserWithRoles(String, String)} (see
+ * {@link #reAdapt(AliasRegistrySpi)} method).
+ */
+public class Scenario implements AliasRegistryHolder {
+
+    private AliasRegistry aliasRegistry = new AliasRegistryDefault();
+
+    private DeploymentType deploymentType;
+    private String configDirectory;
+
+    private IsisSystem isisSystem;
+
+    private InstallerLookupDefault installerLookup;
+
+    private final DateParser dateParser = new DateParser();
+
+    // /////////////////////////////////////////////////////////////
+    // bootstrap / shutdown
+    // /////////////////////////////////////////////////////////////
+
+    public String getConfigDirectory() {
+        return configDirectory;
+    }
+
+    public DeploymentType getDeploymentType() {
+        return deploymentType;
+    }
+
+    public IsisSystem getSystem() {
+        return isisSystem;
+    }
+
+    public InstallerLookup getInstallerLookup() {
+        return installerLookup;
+    }
+
+    @SuppressWarnings("unchecked")
+    public void bootstrapIsis(final String configDirectory, final DeploymentType deploymentType) {
+        this.configDirectory = configDirectory;
+        this.deploymentType = ensureThatArg(deploymentType, is(anyOf(equalTo(DeploymentType.EXPLORATION), equalTo(DeploymentType.PROTOTYPE))));
+
+        final IsisConfigurationBuilderFileSystem configurationBuilder = new IsisConfigurationBuilderFileSystem(getConfigDirectory());
+
+        configurationBuilder.add(SystemConstants.DEPLOYMENT_TYPE_KEY, deploymentType.name());
+        defaultStoryComponentsInto(configurationBuilder);
+
+        getAliasRegistry().clear();
+
+        try {
+            // create system...
+            isisSystem = createSystem(deploymentType, configurationBuilder);
+
+            // ... and provide a session in order to install fixtures
+            IsisContext.openSession(new InitialisationSession());
+
+        } catch (final RuntimeException e) {
+            if (isisSystem != null) {
+                isisSystem.shutdown();
+            }
+            throw e;
+        }
+    }
+
+    private IsisSystem createSystem(final DeploymentType deploymentType, final IsisConfigurationBuilder isisConfigurationBuilder) {
+        this.installerLookup = new InstallerLookupDefault();
+        isisConfigurationBuilder.injectInto(installerLookup);
+
+        final Injector injector = createGuiceInjector(deploymentType, isisConfigurationBuilder, installerLookup);
+        final IsisSystem system = injector.getInstance(IsisSystem.class);
+        return system;
+    }
+
+    private void defaultStoryComponentsInto(final IsisConfigurationBuilder isisConfigurationBuilder) {
+        isisConfigurationBuilder.addDefaultConfigurationResources();
+        isisConfigurationBuilder.add(SystemConstants.AUTHENTICATION_INSTALLER_KEY, BddAuthenticationManagerInstaller.class.getName());
+        isisConfigurationBuilder.add(SystemConstants.OBJECT_PERSISTOR_INSTALLER_KEY, BddInMemoryPersistenceMechanismInstaller.class.getName());
+        isisConfigurationBuilder.add(SystemConstants.PROFILE_PERSISTOR_INSTALLER_KEY, InMemoryUserProfileStoreInstaller.class.getName());
+        isisConfigurationBuilder.add(SystemConstants.FIXTURES_INSTALLER_KEY, FixturesInstallerNoop.class.getName());
+        isisConfigurationBuilder.add(SystemConstants.NOSPLASH_KEY, "" + true);
+    }
+
+    private Injector createGuiceInjector(final DeploymentType deploymentType, final IsisConfigurationBuilder isisConfigurationBuilder, final InstallerLookup installerLookup) {
+        final IsisInjectModule isisModule = new IsisInjectModule(deploymentType, isisConfigurationBuilder, installerLookup);
+        return Guice.createInjector(isisModule);
+    }
+
+    public void shutdownIsis() {
+        new ShutdownIsis(this).shutdown();
+    }
+
+    // /////////////////////////////////////////////////////////////
+    // date+time / logon+switch user
+    // /////////////////////////////////////////////////////////////
+
+    public boolean dateAndTimeIs(final String dateAndTimeStr) {
+        final Date date = dateParser.parse(dateAndTimeStr);
+        if (date != null) {
+            new SetClock(this).setClock(date);
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    /**
+     * Logon, specifying no roles.
+     * <p>
+     * Unlike the {@link LogonFixture} on regular fixtures, the logonAs is not
+     * automatically remembered until the end of the setup. It should therefore
+     * be invoked at the end of setup explicitly.
+     */
+    public void logonAsOrSwitchUserTo(final String userName) {
+        final List<String> noRoles = Collections.emptyList();
+        logonAsOrSwitchUserTo(userName, noRoles);
+    }
+
+    /**
+     * Logon, specifying roles.
+     * <p>
+     * Unlike the {@link LogonFixture} on regular Isis fixtures, the logonAs is
+     * not automatically remembered until the end of the setup. It should
+     * therefore be invoked at the end of setup explicitly.
+     */
+    public void logonAsOrSwitchUserTo(final String userName, final List<String> roleList) {
+        new OpenSession(this).openSession(userName, roleList);
+        aliasRegistry = reAdapt(aliasRegistry);
+    }
+
+    /**
+     * Need to recreate aliases whenever logout/login.
+     */
+    private AliasRegistry reAdapt(final AliasRegistry aliasesRegistry) {
+        final AliasRegistry newAliasesRegistry = new AliasRegistryDefault();
+
+        // first pass: root adapters
+        for (final Map.Entry<String, ObjectAdapter> aliasAdapter : aliasesRegistry) {
+            final String alias = aliasAdapter.getKey();
+            final ObjectAdapter oldAdapter = aliasAdapter.getValue();
+
+            if (oldAdapter.getOid() instanceof AggregatedOid) {
+                continue;
+            }
+            newAliasesRegistry.aliasAs(alias, getAdapterManager().adapterFor(oldAdapter.getObject()));
+        }
+
+        // for now, not supporting aggregated adapters (difficulty in looking up
+        // the parent adapter because the Oid changes)
+
+        // // second pass: aggregated adapters
+        // for (Map.Entry<String,NakedObject> aliasAdapter : oldAliasesRegistry)
+        // {
+        // final String alias = aliasAdapter.getKey();
+        // final ObjectAdapter oldAdapter = aliasAdapter.getValue();
+        //
+        // if(!(oldAdapter.getOid() instanceof AggregatedOid)) {
+        // continue;
+        // }
+        // AggregatedOid aggregatedOid = (AggregatedOid) oldAdapter.getOid();
+        // final Object parentOid = aggregatedOid.getParentOid();
+        // final ObjectAdapter parentAdapter =
+        // getAdapterManager().getAdapterFor(parentOid);
+        // final String fieldName = aggregatedOid.getFieldName();
+        // final NakedObjectAssociation association =
+        // parentAdapter.getSpecification().getAssociation(fieldName);
+        // final ObjectAdapter newAdapter =
+        // getAdapterManager().adapterFor(oldAdapter.getObject(), parentAdapter,
+        // association);
+        //
+        // newAliasesRegistry.put(alias, newAdapter);
+        // }
+        return newAliasesRegistry;
+    }
+
+    // /////////////////////////////////////////////////////////
+    // date parser
+    // /////////////////////////////////////////////////////////
+
+    public void usingDateFormat(final String dateFormatStr) {
+        dateParser.setDateFormat(dateFormatStr);
+        setTemporalFormat("date", dateFormatStr);
+        setTemporalFormat("datetime", dateParser.getCombinedMask());
+        setTemporalFormat("timestamp", dateParser.getCombinedMask());
+    }
+
+    public void usingTimeFormat(final String timeFormatStr) {
+        dateParser.setTimeFormat(timeFormatStr);
+        setTemporalFormat("time", timeFormatStr);
+        setTemporalFormat("datetime", dateParser.getCombinedMask());
+        setTemporalFormat("timestamp", dateParser.getCombinedMask());
+    }
+
+    private void setTemporalFormat(final String propertyType, final String formatStr) {
+        ValueSemanticsProviderAbstractTemporal.setFormat(propertyType, formatStr);
+    }
+
+    public DateParser getDateParser() {
+        return dateParser;
+    }
+
+    // /////////////////////////////////////////////////////////
+    // run viewer
+    // /////////////////////////////////////////////////////////
+
+    public void runViewer() {
+        new RunViewer(this).run();
+    }
+
+    // //////////////////////////////////////////////////////////////////
+    // AliasRegistry impl
+    // //////////////////////////////////////////////////////////////////
+
+    @Override
+    public AliasRegistry getAliasRegistry() {
+        return aliasRegistry;
+    }
+
+    // /////////////////////////////////////////////////////////
+    // Dependencies (from context)
+    // /////////////////////////////////////////////////////////
+
+    protected PersistenceSession getPersistenceSession() {
+        return IsisContext.getPersistenceSession();
+    }
+
+    private AdapterManager getAdapterManager() {
+        return getPersistenceSession().getAdapterManager();
+    }
+
+    public IsisTransactionManager getTransactionManager() {
+        return IsisContext.getTransactionManager();
+    }
+
+    protected IsisConfiguration getConfiguration() {
+        return IsisContext.getConfiguration();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/ScenarioBoundValueException.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/ScenarioBoundValueException.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/ScenarioBoundValueException.java
new file mode 100644
index 0000000..969c320
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/ScenarioBoundValueException.java
@@ -0,0 +1,59 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common;
+
+import java.io.CharArrayWriter;
+import java.io.PrintWriter;
+
+public class ScenarioBoundValueException extends Exception {
+
+    private static final long serialVersionUID = 1L;
+
+    private final CellBinding cellBinding;
+    private final ScenarioCell storyCell;
+
+    public static ScenarioBoundValueException current(final CellBinding cellBinding, final String message) {
+        return new ScenarioBoundValueException(cellBinding, cellBinding.getCurrentCell(), message);
+    }
+
+    public static ScenarioBoundValueException arg(final CellBinding cellBinding, final ScenarioCell storyCell, final String message) {
+        return new ScenarioBoundValueException(cellBinding, storyCell, message);
+    }
+
+    private ScenarioBoundValueException(final CellBinding cellBinding, final ScenarioCell storyCell, final String message) {
+        super(message);
+        this.cellBinding = cellBinding;
+        this.storyCell = storyCell;
+    }
+
+    public CellBinding getCellBinding() {
+        return cellBinding;
+    }
+
+    public ScenarioCell getStoryCell() {
+        return storyCell;
+    }
+
+    public String asString() {
+        final CharArrayWriter caw = new CharArrayWriter();
+        this.printStackTrace(new PrintWriter(caw));
+        return caw.toString();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/ScenarioCell.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/ScenarioCell.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/ScenarioCell.java
new file mode 100644
index 0000000..40ca0b9
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/ScenarioCell.java
@@ -0,0 +1,38 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common;
+
+public interface ScenarioCell {
+
+    /**
+     * The text represented by the source.
+     */
+    public String getText();
+
+    /**
+     * Sets the text held by the source.
+     */
+    public void setText(String str);
+
+    /**
+     * The implementation-specific representation of this text.
+     */
+    public Object getSource();
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/ScenarioCellDefault.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/ScenarioCellDefault.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/ScenarioCellDefault.java
new file mode 100644
index 0000000..b6b27fb
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/ScenarioCellDefault.java
@@ -0,0 +1,51 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common;
+
+/**
+ * Simply holds the text.
+ * 
+ */
+public class ScenarioCellDefault implements ScenarioCell {
+
+    private String source;
+
+    public ScenarioCellDefault(final String source) {
+        this.source = source;
+    }
+
+    @Override
+    public String getText() {
+        return source;
+    }
+
+    @Override
+    public void setText(final String str) {
+        this.source = str;
+    }
+
+    /**
+     * The implementation-specific representation of this text.
+     */
+    @Override
+    public Object getSource() {
+        return source;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/ScenarioValueException.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/ScenarioValueException.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/ScenarioValueException.java
new file mode 100644
index 0000000..c2a92ca
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/ScenarioValueException.java
@@ -0,0 +1,40 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common;
+
+public class ScenarioValueException extends Exception {
+
+    private static final long serialVersionUID = 1L;
+
+    public ScenarioValueException() {
+    }
+
+    public ScenarioValueException(final String message) {
+        super(message);
+    }
+
+    public ScenarioValueException(final Throwable cause) {
+        super(cause);
+    }
+
+    public ScenarioValueException(final String message, final Throwable cause) {
+        super(message, cause);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/ServiceRegistry.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/ServiceRegistry.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/ServiceRegistry.java
new file mode 100644
index 0000000..65ee3e1
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/ServiceRegistry.java
@@ -0,0 +1,23 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common;
+
+public interface ServiceRegistry {
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/components/BddAuthenticationManagerInstaller.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/components/BddAuthenticationManagerInstaller.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/components/BddAuthenticationManagerInstaller.java
new file mode 100644
index 0000000..795e57b
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/components/BddAuthenticationManagerInstaller.java
@@ -0,0 +1,40 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.components;
+
+import java.util.List;
+
+import com.google.common.collect.Lists;
+
+import org.apache.isis.core.commons.config.IsisConfiguration;
+import org.apache.isis.core.runtime.authentication.AuthenticationManagerStandardInstallerAbstractForDfltRuntime;
+import org.apache.isis.core.runtime.authentication.standard.Authenticator;
+import org.apache.isis.core.security.authentication.AuthenticatorBypass;
+
+public class BddAuthenticationManagerInstaller extends AuthenticationManagerStandardInstallerAbstractForDfltRuntime {
+
+    public BddAuthenticationManagerInstaller() {
+        super("bdd");
+    }
+
+    @Override
+    protected List<Authenticator> createAuthenticators(final IsisConfiguration configuration) {
+        return Lists.<Authenticator> newArrayList(new AuthenticatorBypass(configuration));
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/components/BddInMemoryPersistenceMechanismInstaller.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/components/BddInMemoryPersistenceMechanismInstaller.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/components/BddInMemoryPersistenceMechanismInstaller.java
new file mode 100644
index 0000000..4b5af4f
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/components/BddInMemoryPersistenceMechanismInstaller.java
@@ -0,0 +1,48 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.components;
+
+import org.apache.isis.core.objectstore.InMemoryPersistenceMechanismInstaller;
+import org.apache.isis.core.runtime.system.DeploymentType;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory;
+
+public class BddInMemoryPersistenceMechanismInstaller extends InMemoryPersistenceMechanismInstaller {
+
+    public BddInMemoryPersistenceMechanismInstaller() {
+    }
+
+    // ///////////////////////////////////////////////////////////////
+    // Name
+    // ///////////////////////////////////////////////////////////////
+
+    @Override
+    public String getName() {
+        return "bdd";
+    }
+
+    // ///////////////////////////////////////////////////////////////
+    // Hook methods
+    // ///////////////////////////////////////////////////////////////
+
+    @Override
+    public PersistenceSessionFactory createPersistenceSessionFactory(final DeploymentType deploymentType) {
+        return new BddInMemoryPersistenceSessionFactory(deploymentType, getConfiguration(), this);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/components/BddInMemoryPersistenceSessionFactory.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/components/BddInMemoryPersistenceSessionFactory.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/components/BddInMemoryPersistenceSessionFactory.java
new file mode 100644
index 0000000..01210b4
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/components/BddInMemoryPersistenceSessionFactory.java
@@ -0,0 +1,47 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.components;
+
+import org.apache.isis.core.commons.config.IsisConfiguration;
+import org.apache.isis.core.metamodel.facets.object.cached.CachedFacet;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.objectstore.InMemoryPersistenceSessionFactory;
+import org.apache.isis.core.objectstore.internal.ObjectStorePersistedObjects;
+import org.apache.isis.core.runtime.persistence.PersistenceSessionFactoryDelegate;
+import org.apache.isis.core.runtime.system.DeploymentType;
+
+/**
+ * As per {@link InMemoryPersistenceSessionFactory}, but uses the
+ * {@link BddObjectStorePersistedObjects} implementation which stores any
+ * {@link CachedFacet cached} {@link ObjectSpecification class}es
+ * <tt>static</tt>ally (and thus persisted across multiple setups/teardowns of
+ * the {@link NakedObjectsContext}.
+ */
+public class BddInMemoryPersistenceSessionFactory extends InMemoryPersistenceSessionFactory {
+
+    public BddInMemoryPersistenceSessionFactory(final DeploymentType deploymentType, final IsisConfiguration configuration, final PersistenceSessionFactoryDelegate persistenceSessionFactoryDelegate) {
+        super(deploymentType, configuration, persistenceSessionFactoryDelegate);
+    }
+
+    @Override
+    public ObjectStorePersistedObjects createPersistedObjects() {
+        return new BddObjectStorePersistedObjects();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/components/BddObjectStorePersistedObjects.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/components/BddObjectStorePersistedObjects.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/components/BddObjectStorePersistedObjects.java
new file mode 100644
index 0000000..ba3336a
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/components/BddObjectStorePersistedObjects.java
@@ -0,0 +1,124 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.components;
+
+import java.util.Map;
+
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Maps;
+
+import org.apache.isis.core.commons.exceptions.IsisException;
+import org.apache.isis.core.metamodel.adapter.oid.Oid;
+import org.apache.isis.core.metamodel.facets.object.cached.CachedFacet;
+import org.apache.isis.core.metamodel.spec.ObjectSpecId;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.objectstore.internal.ObjectStoreInstances;
+import org.apache.isis.core.objectstore.internal.ObjectStorePersistedObjects;
+import org.apache.isis.core.runtime.system.persistence.IdentifierGeneratorDefault.Memento;
+
+/**
+ * Stores instances in one of two maps, based on whether have their
+ * specification has the {@link CachedFacet} (represents cached or reference
+ * data) or not (represents operational data).
+ * <p>
+ * Those that are cached are stored in a <tt>static</tt> map that is never
+ * {@link #clear()}ed down. Those that are operational go in a regular instance
+ * cache and can be {@link #clear()}ed.
+ */
+public class BddObjectStorePersistedObjects implements ObjectStorePersistedObjects {
+
+    private static final Map<ObjectSpecification, ObjectStoreInstances> cachedInstancesBySpecMap = Maps.newHashMap();
+
+    private final Map<ObjectSpecification, ObjectStoreInstances> operationalInstancesBySpecMap = Maps.newHashMap();
+    private final Map<ObjectSpecId, Oid> serviceOidByIdMap = Maps.newHashMap();
+    
+    private Memento oidGeneratorMemento;
+
+    @Override
+    public Memento getOidGeneratorMemento() {
+        return oidGeneratorMemento;
+    }
+
+    @Override
+    public void saveOidGeneratorMemento(final Memento memento) {
+        this.oidGeneratorMemento = memento;
+    }
+
+    @Override
+    public Oid getService(final ObjectSpecId objectSpecId) {
+        return serviceOidByIdMap.get(objectSpecId);
+    }
+
+    @Override
+    public void registerService(final ObjectSpecId objectSpecId, final Oid oid) {
+        final Oid oidLookedUpByName = serviceOidByIdMap.get(objectSpecId);
+        if (oidLookedUpByName != null) {
+            if (!oidLookedUpByName.equals(oid)) {
+                throw new IsisException("Already another service registered as name: " + objectSpecId + " (existing Oid: " + oidLookedUpByName + ", " + "intended: " + oid + ")");
+            }
+        } else {
+            serviceOidByIdMap.put(objectSpecId, oid);
+        }
+    }
+
+    @Override
+    public Iterable<ObjectSpecification> specifications() {
+        return Iterables.concat(BddObjectStorePersistedObjects.cachedInstancesBySpecMap.keySet(), operationalInstancesBySpecMap.keySet());
+    }
+
+    @Override
+    public Iterable<ObjectStoreInstances> instances() {
+        return Iterables.concat(BddObjectStorePersistedObjects.cachedInstancesBySpecMap.values(), operationalInstancesBySpecMap.values());
+    }
+
+    @Override
+    public ObjectStoreInstances instancesFor(final ObjectSpecification spec) {
+        if (isCached(spec)) {
+            return getFromMap(spec, BddObjectStorePersistedObjects.cachedInstancesBySpecMap);
+        } else {
+            return getFromMap(spec, operationalInstancesBySpecMap);
+        }
+    }
+
+    // //////////////////////////////////////////////////////////////////
+    // Helpers
+    // //////////////////////////////////////////////////////////////////
+
+    private ObjectStoreInstances getFromMap(final ObjectSpecification spec, final Map<ObjectSpecification, ObjectStoreInstances> map) {
+        ObjectStoreInstances ins = map.get(spec);
+        if (ins == null) {
+            ins = new ObjectStoreInstances(spec);
+            map.put(spec, ins);
+        }
+        return ins;
+    }
+
+    private boolean isCached(final ObjectSpecification spec) {
+        return spec.containsFacet(CachedFacet.class);
+    }
+
+    /**
+     * Only clears the operational instances, not the cached instances.
+     */
+    @Override
+    public void clear() {
+        operationalInstancesBySpecMap.clear();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/components/IsisSystemUsingInstallersWithinStory.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/components/IsisSystemUsingInstallersWithinStory.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/components/IsisSystemUsingInstallersWithinStory.java
new file mode 100644
index 0000000..ca7cc8d
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/components/IsisSystemUsingInstallersWithinStory.java
@@ -0,0 +1,44 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.components;
+
+import org.apache.isis.core.profilestore.InMemoryUserProfileStoreInstaller;
+import org.apache.isis.core.runtime.authentication.AuthenticationManagerInstaller;
+import org.apache.isis.core.runtime.installerregistry.InstallerLookup;
+import org.apache.isis.core.runtime.installerregistry.installerapi.PersistenceMechanismInstaller;
+import org.apache.isis.core.runtime.system.DeploymentType;
+import org.apache.isis.core.runtime.systemusinginstallers.IsisSystemUsingInstallers;
+import org.apache.isis.core.runtime.userprofile.UserProfileStoreInstaller;
+
+public class IsisSystemUsingInstallersWithinStory extends IsisSystemUsingInstallers {
+
+    public IsisSystemUsingInstallersWithinStory(final DeploymentType deploymentType, final InstallerLookup installerLookup) {
+        super(deploymentType, installerLookup);
+
+        final AuthenticationManagerInstaller authManagerInstaller = new BddAuthenticationManagerInstaller();
+        setAuthenticationInstaller(getInstallerLookup().injectDependenciesInto(authManagerInstaller));
+
+        final PersistenceMechanismInstaller persistorInstaller = new BddInMemoryPersistenceMechanismInstaller();
+        setPersistenceMechanismInstaller(getInstallerLookup().injectDependenciesInto(persistorInstaller));
+
+        final UserProfileStoreInstaller userProfileStoreInstaller = new InMemoryUserProfileStoreInstaller();
+        setUserProfileStoreInstaller(getInstallerLookup().injectDependenciesInto(userProfileStoreInstaller));
+    }
+
+}


[08/19] ISIS-463: mothballing BDD viewer

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AbstractFixturePeer.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AbstractFixturePeer.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AbstractFixturePeer.java
new file mode 100644
index 0000000..573dbd6
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AbstractFixturePeer.java
@@ -0,0 +1,88 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.isis.core.commons.authentication.AuthenticationSession;
+import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
+import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
+import org.apache.isis.core.runtime.system.context.IsisContext;
+import org.apache.isis.core.runtime.system.persistence.ObjectStore;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
+import org.apache.isis.viewer.bdd.common.AliasRegistry;
+import org.apache.isis.viewer.bdd.common.CellBinding;
+
+public abstract class AbstractFixturePeer {
+
+    private final AliasRegistry aliasRegistry;
+    private final List<CellBinding> cellBindings;
+
+    public AbstractFixturePeer(final AliasRegistry aliasRegistry, final CellBinding... cellBindings) {
+        this(aliasRegistry, Arrays.asList(cellBindings));
+    }
+
+    public AbstractFixturePeer(final AliasRegistry storyRegistries, final List<CellBinding> cellBindings) {
+        this.aliasRegistry = storyRegistries;
+        this.cellBindings = cellBindings;
+    }
+
+    public AliasRegistry getAliasRegistry() {
+        return aliasRegistry;
+    }
+
+    public List<CellBinding> getCellBindings() {
+        return cellBindings;
+    }
+
+    public List<Object> getServices() {
+        return IsisContext.getServices();
+    }
+
+    public SpecificationLoaderSpi getSpecificationLoader() {
+        return IsisContext.getSpecificationLoader();
+    }
+
+    public AuthenticationSession getAuthenticationSession() {
+        return IsisContext.getAuthenticationSession();
+    }
+
+    public PersistenceSession getPersistenceSession() {
+        return IsisContext.getPersistenceSession();
+    }
+
+    protected AdapterManager getAdapterManager() {
+        return getPersistenceSession().getAdapterManager();
+    }
+
+    protected ObjectStore getObjectStore() {
+        return getPersistenceSession().getObjectStore();
+    }
+
+    protected IsisTransactionManager getTransactionManager() {
+        return IsisContext.getTransactionManager();
+    }
+
+    public boolean isValidAlias(final String alias) {
+        return getAliasRegistry().getAliased(alias) != null;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AbstractListFixturePeer.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AbstractListFixturePeer.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AbstractListFixturePeer.java
new file mode 100644
index 0000000..3201927
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AbstractListFixturePeer.java
@@ -0,0 +1,87 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.google.common.collect.Iterables;
+
+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.ScenarioValueException;
+
+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 ScenarioValueException {
+        if (!(getListAdapter() != null)) {
+            throw new ScenarioValueException("no such alias");
+        }
+        if (!isList()) {
+            throw new ScenarioValueException("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;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AbstractSetUpFixturePeer.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AbstractSetUpFixturePeer.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AbstractSetUpFixturePeer.java
new file mode 100644
index 0000000..e329f1d
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AbstractSetUpFixturePeer.java
@@ -0,0 +1,30 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures;
+
+import org.apache.isis.viewer.bdd.common.AliasRegistry;
+import org.apache.isis.viewer.bdd.common.CellBinding;
+
+public class AbstractSetUpFixturePeer extends AbstractFixturePeer {
+
+    public AbstractSetUpFixturePeer(final AliasRegistry aliasRegistry, final CellBinding... cellBindings) {
+        super(aliasRegistry, cellBindings);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AliasItemsInListPeer.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AliasItemsInListPeer.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AliasItemsInListPeer.java
new file mode 100644
index 0000000..a0b8e21
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AliasItemsInListPeer.java
@@ -0,0 +1,105 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+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.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.ScenarioBoundValueException;
+import org.apache.isis.viewer.bdd.common.ScenarioCell;
+
+public class AliasItemsInListPeer extends AbstractListFixturePeer {
+
+    private final CellBinding titleBinding;
+    private final CellBinding typeBinding;
+    private final CellBinding aliasBinding;
+
+    public AliasItemsInListPeer(final AliasRegistry aliasesRegistry, final String listAlias, final CellBinding titleBinding, final CellBinding typeBinding, final CellBinding aliasBinding) {
+        super(aliasesRegistry, listAlias, titleBinding, typeBinding, aliasBinding);
+
+        this.titleBinding = titleBinding;
+        this.typeBinding = typeBinding;
+        this.aliasBinding = aliasBinding;
+    }
+
+    public CellBinding getTitleBinding() {
+        return titleBinding;
+    }
+
+    public CellBinding getTypeBinding() {
+        return typeBinding;
+    }
+
+    public CellBinding getAliasBinding() {
+        return aliasBinding;
+    }
+
+    public ScenarioCell findAndAlias() throws ScenarioBoundValueException {
+        final ObjectAdapter foundAdapter = findAdapter();
+        if (foundAdapter == null) {
+            throw ScenarioBoundValueException.current(titleBinding, "not found");
+        }
+
+        final ScenarioCell currentCell = aliasBinding.getCurrentCell();
+        final String currentCellText = currentCell.getText();
+        getAliasRegistry().aliasAs(currentCellText, foundAdapter);
+        return currentCell;
+    }
+
+    private ObjectAdapter findAdapter() {
+        for (final ObjectAdapter adapter : collectionAdapters()) {
+
+            if (!titleMatches(adapter)) {
+                continue; // keep looking
+            }
+            if (!typeMatches(adapter)) {
+                continue; // keep looking
+            }
+
+            return adapter;
+        }
+        return null;
+    }
+
+    private boolean titleMatches(final ObjectAdapter adapter) {
+        final String adapterTitle = adapter.titleString();
+        final String requiredTitle = titleBinding.getCurrentCell().getText();
+        return StringUtils.nullSafeEquals(adapterTitle, requiredTitle);
+    }
+
+    private boolean typeMatches(final ObjectAdapter adapter) {
+        if (typeBinding == null || !typeBinding.isFound()) {
+            return true;
+        }
+
+        final ObjectSpecification spec = adapter.getSpecification();
+        final String requiredTypeName = typeBinding.getCurrentCell().getText();
+        final String specFullName = spec.getFullIdentifier();
+        if (specFullName.equals(requiredTypeName)) {
+            return true;
+        }
+
+        final String simpleSpecName = StringUtils.simpleName(specFullName);
+        final String simpleRequiredType = StringUtils.simpleName(requiredTypeName);
+        return simpleSpecName.equalsIgnoreCase(simpleRequiredType);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckCollectionContentsPeer.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckCollectionContentsPeer.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckCollectionContentsPeer.java
new file mode 100644
index 0000000..7155dd5
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckCollectionContentsPeer.java
@@ -0,0 +1,119 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+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 CheckCollectionContentsPeer extends AbstractListFixturePeer {
+
+    public CheckCollectionContentsPeer(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 contains(final String alias) {
+        if (!isValidListAlias()) {
+            return false;
+        }
+
+        final ObjectAdapter adapter = getAliasRegistry().getAliased(alias);
+        if (adapter == null) {
+            return false;
+        }
+        return collectionAdapters().contains(adapter);
+    }
+
+    /**
+     * 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 doesNotContain(final String alias) {
+        if (!isValidListAlias()) {
+            return false;
+        }
+        final ObjectAdapter adapter = getAliasRegistry().getAliased(alias);
+        if (adapter == null) {
+            return false;
+        }
+        return !collectionAdapters().contains(adapter);
+    }
+
+    /**
+     * Returns <tt>true</tt> if is empty.
+     * 
+     * @return <tt>false</tt> if the alias is invalid or does not represent a
+     *         list
+     */
+    public boolean isEmpty() {
+        if (!isValidListAlias()) {
+            return false;
+        }
+        return collectionAdapters().size() == 0;
+    }
+
+    /**
+     * 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 isNotEmpty() {
+        if (!isValidListAlias()) {
+            return false;
+        }
+
+        return collectionAdapters().size() != 0;
+    }
+
+    /**
+     * 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 assertSize(final 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();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckListConstants.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckListConstants.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckListConstants.java
new file mode 100644
index 0000000..69c7cf6
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckListConstants.java
@@ -0,0 +1,30 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+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;
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckListPeer.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckListPeer.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckListPeer.java
new file mode 100644
index 0000000..5244d3d
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckListPeer.java
@@ -0,0 +1,148 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures;
+
+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.spec.ObjectSpecification;
+import org.apache.isis.viewer.bdd.common.AliasRegistry;
+import org.apache.isis.viewer.bdd.common.CellBinding;
+
+public class CheckListPeer extends AbstractListFixturePeer {
+
+    public static enum CheckMode {
+        EXACT {
+            @Override
+            public boolean isExact() {
+                return true;
+            }
+        },
+        NOT_EXACT {
+            @Override
+            public boolean isExact() {
+                return false;
+            }
+        };
+        public abstract boolean isExact();
+    }
+
+    private final CheckMode checkMode;
+
+    private final CellBinding titleBinding;
+    /**
+     * Can be set to null, indicating that no type checking is performed.
+     */
+    private final CellBinding typeBinding;
+
+    /**
+     * Objects found while processing table.
+     */
+    private final List<ObjectAdapter> foundAdapters = new ArrayList<ObjectAdapter>();
+
+    public CheckListPeer(final AliasRegistry aliasesRegistry, final String listAlias, final CheckMode checkMode, final CellBinding titleBinding) {
+        this(aliasesRegistry, listAlias, checkMode, titleBinding, null);
+    }
+
+    public CheckListPeer(final AliasRegistry aliasesRegistry, final 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;
+    }
+
+    public List<ObjectAdapter> getFoundAdapters() {
+        return foundAdapters;
+    }
+
+    public List<ObjectAdapter> getNotFoundAdapters() {
+        final List<ObjectAdapter> allAdapters = new ArrayList<ObjectAdapter>(collectionAdapters());
+        allAdapters.removeAll(foundAdapters);
+        return allAdapters;
+    }
+
+    public boolean findAndAddObject() {
+        final ObjectAdapter foundAdapter = findAdapter();
+        if (foundAdapter == null) {
+            return false;
+        }
+        foundAdapters.add(foundAdapter);
+        return true;
+    }
+
+    private ObjectAdapter findAdapter() {
+        for (final ObjectAdapter adapter : collectionAdapters()) {
+
+            if (!titleMatches(adapter)) {
+                continue; // keep looking
+            }
+            if (!typeMatches(adapter)) {
+                continue; // keep looking
+            }
+
+            return adapter;
+        }
+        return null;
+    }
+
+    private boolean titleMatches(final ObjectAdapter adapter) {
+        final String adapterTitle = adapter.titleString();
+        final String requiredTitle = titleBinding.getCurrentCell().getText();
+        return StringUtils.nullSafeEquals(adapterTitle, requiredTitle);
+    }
+
+    private boolean typeMatches(final ObjectAdapter adapter) {
+        if (typeBinding == null || !typeBinding.isFound()) {
+            return true;
+        }
+
+        final ObjectSpecification spec = adapter.getSpecification();
+        final String requiredTypeName = typeBinding.getCurrentCell().getText();
+        final String specFullName = spec.getFullIdentifier();
+        if (specFullName.equals(requiredTypeName)) {
+            return true;
+        }
+
+        final String simpleSpecName = StringUtils.simpleName(specFullName);
+        final String simpleRequiredType = StringUtils.simpleName(requiredTypeName);
+        return simpleSpecName.equalsIgnoreCase(simpleRequiredType);
+    }
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/DebugClockPeer.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/DebugClockPeer.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/DebugClockPeer.java
new file mode 100644
index 0000000..e6a82e6
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/DebugClockPeer.java
@@ -0,0 +1,49 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures;
+
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+
+import org.apache.isis.applib.clock.Clock;
+import org.apache.isis.viewer.bdd.common.AliasRegistry;
+import org.apache.isis.viewer.bdd.common.CellBinding;
+import org.apache.isis.viewer.bdd.common.ScenarioCell;
+
+public class DebugClockPeer extends AbstractFixturePeer {
+
+    private final CellBinding cellBinding;
+    private final static SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("dd-MMM-yyyy HH:mm");
+
+    public DebugClockPeer(final AliasRegistry aliasesRegistry, final CellBinding cellBinding) {
+        super(aliasesRegistry, cellBinding);
+        this.cellBinding = cellBinding;
+    }
+
+    public ScenarioCell getCurrentCell() {
+        return cellBinding.getCurrentCell();
+    }
+
+    public String getFormattedClockTime() {
+        final Calendar cal = Clock.getTimeAsCalendar();
+        final String formattedDate = DATE_FORMAT.format(cal.getTime());
+        return formattedDate;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/DebugObjectStorePeer.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/DebugObjectStorePeer.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/DebugObjectStorePeer.java
new file mode 100644
index 0000000..86e0c01
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/DebugObjectStorePeer.java
@@ -0,0 +1,39 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures;
+
+import org.apache.isis.core.commons.debug.DebugString;
+import org.apache.isis.core.runtime.system.persistence.ObjectStore;
+import org.apache.isis.viewer.bdd.common.AliasRegistry;
+import org.apache.isis.viewer.bdd.common.CellBinding;
+
+public class DebugObjectStorePeer extends AbstractFixturePeer {
+
+    public DebugObjectStorePeer(final AliasRegistry aliasesRegistry, final CellBinding... cellBindings) {
+        super(aliasesRegistry, cellBindings);
+    }
+
+    public String debugObjectStore() {
+        final ObjectStore objectStore = getObjectStore();
+        final DebugString debug = new DebugString();
+        objectStore.debugData(debug);
+        return debug.toString().replaceAll("\n", "<br>");
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/DebugServicesPeer.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/DebugServicesPeer.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/DebugServicesPeer.java
new file mode 100644
index 0000000..767a13d
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/DebugServicesPeer.java
@@ -0,0 +1,45 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures;
+
+import java.util.List;
+
+import org.apache.isis.core.commons.debug.DebugString;
+import org.apache.isis.viewer.bdd.common.AliasRegistry;
+import org.apache.isis.viewer.bdd.common.CellBinding;
+
+public class DebugServicesPeer extends AbstractFixturePeer {
+
+    public DebugServicesPeer(final AliasRegistry aliasesRegistry, final CellBinding... cellBindings) {
+        super(aliasesRegistry, cellBindings);
+    }
+
+    public String debugServices() {
+        final DebugString debug = new DebugString();
+
+        final List<Object> services = getServices();
+
+        for (final Object service : services) {
+            debug.append(service.getClass().getName());
+            debug.append("\n");
+        }
+        return debug.toString().replaceAll("\n", "<br>");
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/SetUpObjectsPeer.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/SetUpObjectsPeer.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/SetUpObjectsPeer.java
new file mode 100644
index 0000000..321127e
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/SetUpObjectsPeer.java
@@ -0,0 +1,305 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures;
+
+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;
+import org.apache.isis.core.metamodel.facets.properties.modify.PropertySetterFacet;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
+import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
+import org.apache.isis.viewer.bdd.common.AliasRegistry;
+import org.apache.isis.viewer.bdd.common.CellBinding;
+import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
+
+public class SetUpObjectsPeer extends AbstractFixturePeer {
+
+    public static enum Mode {
+        PERSIST, DO_NOT_PERSIST;
+
+        public boolean isPersist() {
+            return this == PERSIST;
+        }
+    }
+
+    public static enum PropertyResult {
+        ALIAS, NO_SUCH_PROPERTY, NOT_A_PROPERTY, OK;
+        public boolean isOk() {
+            return this == OK;
+        }
+    }
+
+    public static enum SetUpObjectResult {
+        OK, NO_ASSOCIATION, CLEARED, CANNOT_CLEAR("(cannot clear)"), CANNOT_SET("(cannot set"), CANNOT_PARSE("(cannot parse)"), UNKNOWN_REFERENCE("(unknown reference)");
+        private String errorMessage;
+
+        private SetUpObjectResult() {
+            this(null);
+        }
+
+        private SetUpObjectResult(final String errorMessage) {
+            this.errorMessage = errorMessage;
+        }
+
+        public boolean isHandled() {
+            return !isError();
+        }
+
+        public boolean isError() {
+            return errorMessage != null;
+        }
+
+        public String getErrorMessage() {
+            return errorMessage;
+        }
+    }
+
+    public interface AssociationVisitor {
+        void visit(OneToOneAssociation association, int colNum);
+    }
+
+    private final ObjectSpecification spec;
+
+    private final List<OneToOneAssociation> properties = new ArrayList<OneToOneAssociation>();
+    private final CellBinding aliasBinding;
+    private final SetUpObjectsPeer.Mode mode;
+
+    private final List<String> cellTextList = new ArrayList<String>();
+    private String alias;
+
+    // ///////////////////////////////////////////////////////////////////////
+    // constructor
+    // ///////////////////////////////////////////////////////////////////////
+
+    public SetUpObjectsPeer(final AliasRegistry aliasRegistry, final String className, final SetUpObjectsPeer.Mode mode, final CellBinding aliasBinding) {
+        super(aliasRegistry, aliasBinding);
+
+        this.spec = loadSpecIfValid(className);
+
+        this.mode = mode;
+        this.aliasBinding = aliasBinding;
+    }
+
+    private ObjectSpecification loadSpecIfValid(final String className) {
+        try {
+            return getSpecificationLoader().loadSpecification(className);
+        } catch (final IsisException ex) {
+            return null;
+        }
+    }
+
+    public boolean isSpecOk() {
+        return spec != null;
+    }
+
+    public List<OneToOneAssociation> getProperties() {
+        return properties;
+    }
+
+    public CellBinding getAliasBinding() {
+        return aliasBinding;
+    }
+
+    // ///////////////////////////////////////////////////////////////////////
+    // header
+    // ///////////////////////////////////////////////////////////////////////
+
+    public PropertyResult definePropertyOrAlias(final String heading, final int colNum) {
+
+        OneToOneAssociation otoa = null;
+
+        try {
+            final int aliasColumn = getAliasBinding().getColumn();
+            if (colNum == aliasColumn) {
+                return PropertyResult.ALIAS;
+            }
+
+            ObjectAssociation association = null;
+            try {
+                final String memberName = StringUtils.memberIdFor(heading);
+                association = spec.getAssociation(memberName);
+            } catch (final Exception ex) {
+                return PropertyResult.NO_SUCH_PROPERTY;
+            }
+
+            if (!association.isOneToOneAssociation()) {
+                return PropertyResult.NOT_A_PROPERTY;
+            }
+
+            otoa = (OneToOneAssociation) association;
+
+            return PropertyResult.OK;
+        } finally {
+            // add an association if OK, add null otherwise
+            getProperties().add(otoa);
+        }
+    }
+
+    // ///////////////////////////////////////////////////////////////////////
+    // each row
+    // ///////////////////////////////////////////////////////////////////////
+
+    /**
+     * Used by Concordion only.
+     * 
+     * <p>
+     * FitNesse, on the other hand, uses a more fine-grained approach, calling
+     * the underlying methods.
+     */
+    public void createObject() throws ScenarioBoundValueException {
+        final ObjectAdapter adapter = createInstance();
+
+        for (int colNum = 0; colNum < getProperties().size(); colNum++) {
+            final SetUpObjectResult result = setUpProperty(adapter, colNum);
+
+            if (!result.isHandled()) {
+                final CellBinding cellBinding = getCellBindings().get(colNum);
+                throw ScenarioBoundValueException.current(cellBinding, result.getErrorMessage());
+            }
+        }
+
+        persistIfNecessary(adapter);
+        alias(adapter);
+        resetForNextObject();
+    }
+
+    public void resetForNextObject() {
+        cellTextList.clear();
+        this.alias = null;
+    }
+
+    public ObjectAdapter createInstance() {
+        if (spec == null) {
+            return null;
+        }
+        return getPersistenceSession().createTransientInstance(spec);
+    }
+
+    public SetUpObjectResult setUpProperty(final ObjectAdapter adapter, final int colNum) {
+
+        final OneToOneAssociation association = getProperties().get(colNum);
+        if (association == null) {
+            return SetUpObjectResult.NO_ASSOCIATION;
+        }
+
+        final String cellText = cellTextList.get(colNum);
+
+        // handle empty cell as null
+        if (cellText == null || cellText.length() == 0) {
+
+            // use clear facet if available
+            final PropertyClearFacet clearFacet = association.getFacet(PropertyClearFacet.class);
+
+            if (clearFacet != null) {
+                clearFacet.clearProperty(adapter);
+                return SetUpObjectResult.CLEARED;
+            }
+
+            // use setter facet otherwise
+            final PropertySetterFacet setterFacet = association.getFacet(PropertySetterFacet.class);
+
+            if (setterFacet != null) {
+                setterFacet.setProperty(adapter, null);
+                return SetUpObjectResult.CLEARED;
+            }
+
+            return SetUpObjectResult.CANNOT_CLEAR;
+        }
+
+        // non-empty, will need a setter
+        final PropertySetterFacet setterFacet = association.getFacet(PropertySetterFacet.class);
+        if (setterFacet == null) {
+            return SetUpObjectResult.CANNOT_SET;
+        }
+
+        final ObjectSpecification fieldSpecification = association.getSpecification();
+        final ParseableFacet parseableFacet = fieldSpecification.getFacet(ParseableFacet.class);
+
+        ObjectAdapter referencedAdapter = null;
+        if (parseableFacet != null) {
+            // handle as parseable value
+            try {
+                referencedAdapter = parseableFacet.parseTextEntry(adapter, cellText, null);
+            } catch (final IllegalArgumentException ex) {
+                return SetUpObjectResult.CANNOT_PARSE;
+            }
+
+        } else {
+            // handle as reference to known object
+            referencedAdapter = getAliasRegistry().getAliased(cellText);
+            if (referencedAdapter == null) {
+                return SetUpObjectResult.UNKNOWN_REFERENCE;
+            }
+        }
+
+        setterFacet.setProperty(adapter, referencedAdapter);
+        return SetUpObjectResult.OK;
+    }
+
+    public void persistIfNecessary(final ObjectAdapter adapter) {
+        if (mode.isPersist()) {
+            // xactn mgmt now done by PersistenceSession#makePersistent()
+            // getTransactionManager().startTransaction();
+            getPersistenceSession().makePersistent(adapter);
+            // getTransactionManager().endTransaction();
+        }
+    }
+
+    public void alias(final ObjectAdapter adapter) {
+        final String alias = aliasFor(adapter);
+        getAliasRegistry().aliasAs(alias, adapter);
+    }
+
+    public String aliasFor(final ObjectAdapter adapter) {
+        if (alias != null) {
+            return alias;
+        } else {
+            final String specShortName = StringUtils.lowerLeading(spec.getShortIdentifier());
+            return getAliasRegistry().aliasPrefixedAs(specShortName, adapter);
+        }
+    }
+
+    public void forEachAssociation(final AssociationVisitor visitor) {
+        for (int colNum = 0; colNum < getProperties().size(); colNum++) {
+            final OneToOneAssociation association = getProperties().get(colNum);
+            if (association != null) {
+                visitor.visit(association, colNum);
+            }
+        }
+    }
+
+    public boolean addPropertyValueOrAlias(final String propertyValue) {
+        cellTextList.add(propertyValue);
+
+        // capture alias if just added
+        final int aliasColumn1based = getAliasBinding().getColumn() + 1;
+        if (cellTextList.size() == aliasColumn1based) {
+            alias = propertyValue;
+        }
+
+        return true;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/UsingIsisViewerPeer.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/UsingIsisViewerPeer.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/UsingIsisViewerPeer.java
new file mode 100644
index 0000000..7524005
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/UsingIsisViewerPeer.java
@@ -0,0 +1,386 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.isis.core.commons.exceptions.NotYetImplementedException;
+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.object.parseable.TextEntryParseException;
+import org.apache.isis.core.metamodel.spec.ActionType;
+import org.apache.isis.core.metamodel.spec.ObjectActionSet;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
+import org.apache.isis.core.metamodel.spec.feature.ObjectActionContainer.Contributed;
+import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
+import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
+import org.apache.isis.core.runtime.system.DeploymentType;
+import org.apache.isis.viewer.bdd.common.AliasRegistry;
+import org.apache.isis.viewer.bdd.common.CellBinding;
+import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
+import org.apache.isis.viewer.bdd.common.ScenarioCell;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.AddToCollection;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.CheckAction;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.CheckAddToCollection;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.CheckClearProperty;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.CheckCollection;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.CheckObject;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.CheckProperty;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.CheckRemoveFromCollection;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.CheckSetProperty;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.ClearProperty;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.GetActionParameterChoices;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.GetActionParameterDefault;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.GetCollection;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.GetProperty;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.GetPropertyChoices;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.GetPropertyDefault;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.InvokeAction;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.Perform;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.RemoveFromCollection;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.SaveObject;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.SetProperty;
+import org.apache.isis.viewer.bdd.common.parsers.DateParser;
+
+public class UsingIsisViewerPeer extends AbstractFixturePeer {
+
+    private static List<Perform> performCommands(final Perform.Mode mode) {
+        final ArrayList<Perform> commands = new ArrayList<Perform>();
+
+        commands.add(new CheckProperty(mode));
+        commands.add(new CheckSetProperty(mode));
+        commands.add(new CheckClearProperty(mode));
+        commands.add(new GetProperty(mode));
+        commands.add(new SetProperty(mode));
+        commands.add(new ClearProperty(mode));
+        commands.add(new GetPropertyDefault(mode));
+        commands.add(new GetPropertyChoices(mode));
+
+        commands.add(new CheckCollection(mode));
+        commands.add(new CheckAddToCollection(mode));
+        commands.add(new CheckRemoveFromCollection(mode));
+        commands.add(new AddToCollection(mode));
+        commands.add(new RemoveFromCollection(mode));
+        commands.add(new GetCollection(mode));
+
+        commands.add(new CheckAction(mode));
+        commands.add(new InvokeAction(mode));
+        commands.add(new GetActionParameterDefault(mode));
+        commands.add(new GetActionParameterChoices(mode));
+
+        commands.add(new CheckObject(mode));
+        commands.add(new SaveObject(mode));
+
+        return commands;
+    }
+
+    // //////////////////////////////////////////////////////////////////
+    // constructor
+    // //////////////////////////////////////////////////////////////////
+
+    private final CellBinding onObjectBinding;
+    private final CellBinding aliasResultAsBinding;
+    private final CellBinding performBinding;
+    private final CellBinding onMemberBinding;
+    private final CellBinding thatItBinding;
+    private final CellBinding arg0Binding;
+
+    private final DeploymentType deploymentType;
+    private final DateParser dateParser;
+
+    private final Map<String, Perform> commandByKey = new HashMap<String, Perform>();
+
+    public UsingIsisViewerPeer(final AliasRegistry aliasesRegistry, final DeploymentType deploymentType, final DateParser dateParser, final Perform.Mode mode, final CellBinding onObjectBinding, final CellBinding aliasResultAsBinding, final CellBinding performBinding,
+            final CellBinding onMemberBinding, final CellBinding thatItBinding, final CellBinding arg0Binding) {
+        super(aliasesRegistry, onObjectBinding, aliasResultAsBinding, performBinding, onMemberBinding, thatItBinding, arg0Binding);
+
+        this.onObjectBinding = onObjectBinding;
+        this.aliasResultAsBinding = aliasResultAsBinding;
+        this.performBinding = performBinding;
+        this.onMemberBinding = onMemberBinding;
+        this.thatItBinding = thatItBinding;
+        this.arg0Binding = arg0Binding;
+
+        this.deploymentType = deploymentType;
+        this.dateParser = dateParser;
+
+        final List<Perform> performCommands = performCommands(mode);
+        for (final Perform command : performCommands) {
+            commandByKey.put(command.getKey(), command);
+        }
+    }
+
+    public DeploymentType getDeploymentType() {
+        return deploymentType;
+    }
+
+    public DateParser getDateParser() {
+        return dateParser;
+    }
+
+    public CellBinding getOnObjectBinding() {
+        return onObjectBinding;
+    }
+
+    public CellBinding getAliasResultAsBinding() {
+        return aliasResultAsBinding;
+    }
+
+    public CellBinding getOnMemberBinding() {
+        return onMemberBinding;
+    }
+
+    public CellBinding getPerformBinding() {
+        return performBinding;
+    }
+
+    public CellBinding getThatItBinding() {
+        return thatItBinding;
+    }
+
+    public CellBinding getArg0Binding() {
+        return arg0Binding;
+    }
+
+    public boolean isArg0BindingLast() {
+        return !bindingAfterArg0();
+
+    }
+
+    private boolean bindingAfterArg0() {
+        if (!getArg0Binding().isFound()) {
+            return false;
+        }
+        for (final CellBinding binding : getCellBindings()) {
+            if (binding.getColumn() > getArg0Binding().getColumn()) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    // //////////////////////////////////////////////////////////////////
+    // validate API
+    // //////////////////////////////////////////////////////////////////
+
+    public ObjectAdapter validateOnObject() throws ScenarioBoundValueException {
+
+        final ScenarioCell onObjectCell = onObjectBinding.getCurrentCell();
+        String onObject = onObjectCell.getText();
+        if (onObject == null) {
+            if (previousOnObject == null) {
+                throw ScenarioBoundValueException.current(onObjectBinding, "(required)");
+            }
+            onObject = previousOnObject;
+        } else {
+            previousOnObject = onObject;
+        }
+        final ObjectAdapter onAdapter = getAliasRegistry().getAliased(onObject);
+        if (onAdapter == null) {
+            throw ScenarioBoundValueException.current(onMemberBinding, "(unknown object)");
+        }
+        return onAdapter;
+    }
+
+    public String validateAliasAs() throws ScenarioBoundValueException {
+        if (getAliasResultAsBinding() == null) {
+            return null;
+        }
+        final ScenarioCell aliasCell = aliasResultAsBinding.getCurrentCell();
+        if (aliasCell == null) {
+            return null;
+        }
+
+        final String aliasAs = aliasCell.getText();
+        if (getAliasRegistry().getAliased(aliasAs) != null) {
+            throw ScenarioBoundValueException.current(aliasResultAsBinding, "(already used)");
+        }
+        return aliasAs;
+    }
+
+    public ObjectMember validateOnMember(final ObjectAdapter onAdapter) throws ScenarioBoundValueException {
+
+        final ScenarioCell onMemberCell = onMemberBinding.getCurrentCell();
+        final String onMember = onMemberCell.getText();
+
+        if (StringUtils.isNullOrEmpty(onMember)) {
+            throw ScenarioBoundValueException.current(onMemberBinding, "(required)");
+        }
+
+        if (onAdapter == null) {
+            return null;
+        }
+
+        // see if property, collection or action.
+        final String memberId = StringUtils.memberIdFor(onMember);
+        final ObjectSpecification spec = onAdapter.getSpecification();
+        final List<ObjectMember> objectMembers = new ArrayList<ObjectMember>();
+
+        objectMembers.addAll(spec.getAssociations());
+
+        // see if action (of any type)
+        objectMembers.addAll(spec.getObjectActions(Arrays.asList(ActionType.USER, ActionType.EXPLORATION, ActionType.DEBUG), Contributed.INCLUDED));
+        for (final ObjectMember member : objectMembers) {
+            if (matchesId(member, memberId)) {
+                return member;
+            }
+            // special handling for contributed actions.
+            if (member instanceof ObjectActionSet) {
+                final ObjectActionSet actionSet = (ObjectActionSet) member;
+                for (final ObjectAction contributedAction : actionSet.getActions()) {
+                    if (contributedAction.getId().equals(memberId)) {
+                        return contributedAction;
+                    }
+                }
+            }
+        }
+        throw ScenarioBoundValueException.current(onMemberBinding, "(unknown member)");
+    }
+
+    public Perform validatePerform() throws ScenarioBoundValueException {
+        final String perform = performBinding.getCurrentCell().getText();
+        if (perform == null) {
+            throw ScenarioBoundValueException.current(performBinding, "(required)");
+        }
+        final Perform performCommand = commandByKey.get(perform);
+        if (performCommand == null) {
+            throw ScenarioBoundValueException.current(performBinding, "(unknown interaction)");
+        }
+        return performCommand;
+    }
+
+    private boolean matchesId(final ObjectMember member, final String memberId) {
+        return member.getId().equals(memberId);
+    }
+
+    // //////////////////////////////////////////////////////////////////
+    // "perform" API
+    // //////////////////////////////////////////////////////////////////
+
+    public void performCommand(final ObjectAdapter onAdapter, final String aliasAs, final ObjectMember objectMember, final Perform performCommand, final List<ScenarioCell> argumentStoryCells) throws ScenarioBoundValueException {
+        final PerformContext performContext = new PerformContext(this, onAdapter, objectMember, argumentStoryCells);
+        try {
+            performCommand.perform(performContext);
+        } catch (final RuntimeException ex) {
+            // handler should have colored in invalid cells.
+        }
+        aliasResultFromPerformCommand(performCommand, aliasAs);
+    }
+
+    private void aliasResultFromPerformCommand(final Perform performCommand, final String aliasAs) throws ScenarioBoundValueException {
+        if (StringUtils.isNullOrEmpty(aliasAs)) {
+            return;
+        }
+        final ObjectAdapter resultAdapter = performCommand.getResult();
+        if (resultAdapter == null) {
+            throw ScenarioBoundValueException.current(onMemberBinding, "(no result)");
+        }
+        getAliasRegistry().aliasAs(aliasAs, resultAdapter);
+    }
+
+    // //////////////////////////////////////////////////////////////////
+    //
+    // //////////////////////////////////////////////////////////////////
+
+    private String previousOnObject = null;
+
+    /**
+     * Not public API
+     */
+    public void provideDefault(final ScenarioCell storySource, final String resultStr) {
+        // TODO Auto-generated method stub
+        throw new NotYetImplementedException();
+    }
+
+    /**
+     * Not public API
+     */
+    public ObjectAdapter getAdapter(final ObjectAdapter contextAdapter, final ObjectSpecification noSpec, final CellBinding contextBinding, final ScenarioCell paramCell) throws ScenarioBoundValueException {
+
+        final String cellText = paramCell.getText();
+
+        // see if can handle as parseable value
+        final ParseableFacet parseableFacet = noSpec.getFacet(ParseableFacet.class);
+        if (parseableFacet != null) {
+            try {
+                return parseableFacet.parseTextEntry(contextAdapter, cellText, null);
+            } catch (final TextEntryParseException ex) {
+                throw ScenarioBoundValueException.arg(contextBinding, paramCell, "(cannot parse '" + cellText + "')");
+            } catch (final IllegalArgumentException ex) {
+                // REVIEW: isn't what is thrown, but perhaps
+                // TextEntryParseException should inherit from
+                // IllegalArgumentException?
+                throw ScenarioBoundValueException.arg(contextBinding, paramCell, "(cannot parse '" + cellText + "')");
+            }
+        }
+
+        // otherwise, handle as reference to known object
+        final ObjectAdapter adapter = getAliasRegistry().getAliased(cellText);
+        if (adapter == null) {
+            throw ScenarioBoundValueException.arg(contextBinding, paramCell, "(unknown reference'" + cellText + "')");
+        }
+
+        return adapter;
+    }
+
+    /**
+     * Not public API
+     * 
+     * <p>
+     * Ensures that there are at least enough arguments for the number of
+     * parameters required.
+     */
+    public ObjectAdapter[] getAdapters(final ObjectAdapter onAdapter, final ObjectAction objectAction, final CellBinding onMemberBinding, final List<ScenarioCell> argumentCells) throws ScenarioBoundValueException {
+        final List<ObjectActionParameter> parameters = objectAction.getParameters();
+
+        final int parameterCount = parameters.size();
+        if (argumentCells.size() < parameterCount) {
+            throw ScenarioBoundValueException.current(onMemberBinding, "(action requires " + parameterCount + " arguments)");
+        }
+        final ObjectAdapter[] adapters = new ObjectAdapter[parameterCount];
+
+        for (int i = 0; i < parameterCount; i++) {
+            final ScenarioCell paramCell = argumentCells.get(i);
+            final ObjectActionParameter parameter = parameters.get(i);
+            adapters[i] = getAdapter(null, parameter.getSpecification(), onMemberBinding, paramCell);
+        }
+        return adapters;
+    }
+
+    /**
+     * Not public API
+     */
+    public ObjectAdapter toAdaptedListOfPojos(final ObjectAdapter[] choiceAdapters) {
+        final List<Object> choiceList = new ArrayList<Object>();
+        if (choiceAdapters != null) {
+            for (final ObjectAdapter adapter : choiceAdapters) {
+                choiceList.add(adapter.getObject());
+            }
+        }
+        return getAdapterManager().adapterFor(choiceList);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/AddToCollection.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/AddToCollection.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/AddToCollection.java
new file mode 100644
index 0000000..1dff803
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/AddToCollection.java
@@ -0,0 +1,79 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.consent.Consent;
+import org.apache.isis.core.metamodel.consent.InteractionInvocationMethod;
+import org.apache.isis.core.metamodel.facets.collections.modify.CollectionAddToFacet;
+import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
+import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
+import org.apache.isis.viewer.bdd.common.CellBinding;
+import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
+import org.apache.isis.viewer.bdd.common.ScenarioCell;
+
+public class AddToCollection extends PerformAbstractTypeParams {
+
+    private ObjectAdapter result;
+
+    public AddToCollection(final Perform.Mode mode) {
+        super("add to collection", Type.COLLECTION, NumParameters.ONE, mode);
+    }
+
+    @Override
+    public void doHandle(final PerformContext performContext) throws ScenarioBoundValueException {
+
+        final ObjectAdapter onAdapter = performContext.getOnAdapter();
+        final ObjectMember nakedObjectMember = performContext.getObjectMember();
+        final CellBinding onMemberBinding = performContext.getPeer().getOnMemberBinding();
+
+        final OneToManyAssociation otma = (OneToManyAssociation) nakedObjectMember;
+
+        final CollectionAddToFacet addToFacet = nakedObjectMember.getFacet(CollectionAddToFacet.class);
+        if (addToFacet == null) {
+            throw ScenarioBoundValueException.current(onMemberBinding, "(cannot add to collection)");
+        }
+
+        // safe since guaranteed by superclass
+        final CellBinding arg0Binding = performContext.getPeer().getArg0Binding();
+        final ScenarioCell arg0Cell = arg0Binding.getCurrentCell();
+        final String toAddAlias = arg0Cell.getText();
+
+        final ObjectAdapter toAddAdapter = performContext.getPeer().getAliasRegistry().getAliased(toAddAlias);
+        if (toAddAdapter == null) {
+            throw ScenarioBoundValueException.current(arg0Binding, "(unknown alias)");
+        }
+
+        // validate argument
+        otma.createValidateAddInteractionContext(getSession(), InteractionInvocationMethod.BY_USER, onAdapter, toAddAdapter);
+        final Consent validToAdd = otma.isValidToAdd(onAdapter, toAddAdapter);
+        if (validToAdd.isVetoed()) {
+            throw ScenarioBoundValueException.current(arg0Binding, validToAdd.getReason());
+        }
+
+        // add
+        addToFacet.add(onAdapter, toAddAdapter);
+    }
+
+    @Override
+    public ObjectAdapter getResult() {
+        return result;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckAction.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckAction.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckAction.java
new file mode 100644
index 0000000..4359027
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckAction.java
@@ -0,0 +1,35 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform;
+
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.Disabled;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.Hidden;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.PerformCheckThatAbstract;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.Usable;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.Visible;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.action.ArgumentSetNotValid;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.action.ArgumentSetValid;
+
+public class CheckAction extends PerformCheckThatAbstract {
+
+    public CheckAction(final Perform.Mode mode) {
+        super("check action", OnMemberColumn.REQUIRED, mode, new Hidden(), new Visible(), new Disabled(), new Usable(), new ArgumentSetValid(), new ArgumentSetNotValid());
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckAddToCollection.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckAddToCollection.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckAddToCollection.java
new file mode 100644
index 0000000..2e35ebe
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckAddToCollection.java
@@ -0,0 +1,31 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform;
+
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.AssertsValidity;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.PerformCheckThatAbstract;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.collections.ProposedAddTo;
+
+public class CheckAddToCollection extends PerformCheckThatAbstract {
+
+    public CheckAddToCollection(final Perform.Mode mode) {
+        super("check add to collection", OnMemberColumn.REQUIRED, mode, new ProposedAddTo(AssertsValidity.VALID), new ProposedAddTo(AssertsValidity.INVALID));
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckClearProperty.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckClearProperty.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckClearProperty.java
new file mode 100644
index 0000000..865163b
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckClearProperty.java
@@ -0,0 +1,31 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform;
+
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.AssertsValidity;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.PerformCheckThatAbstract;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.property.ProposedClear;
+
+public class CheckClearProperty extends PerformCheckThatAbstract {
+
+    public CheckClearProperty(final Perform.Mode mode) {
+        super("check clear property", OnMemberColumn.REQUIRED, mode, new ProposedClear(AssertsValidity.VALID), new ProposedClear(AssertsValidity.INVALID));
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckCollection.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckCollection.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckCollection.java
new file mode 100644
index 0000000..08fa553
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckCollection.java
@@ -0,0 +1,37 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform;
+
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.AssertsContainment;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.AssertsEmpty;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.Disabled;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.Hidden;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.PerformCheckThatAbstract;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.Usable;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.Visible;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.collections.Containment;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.collections.Emptiness;
+
+public class CheckCollection extends PerformCheckThatAbstract {
+
+    public CheckCollection(final Perform.Mode mode) {
+        super("check collection", OnMemberColumn.REQUIRED, mode, new Hidden(), new Visible(), new Disabled(), new Usable(), new Emptiness(AssertsEmpty.EMPTY), new Emptiness(AssertsEmpty.NOT_EMPTY), new Containment(AssertsContainment.CONTAINS), new Containment(AssertsContainment.DOES_NOT_CONTAIN));
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckObject.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckObject.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckObject.java
new file mode 100644
index 0000000..93d677a
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckObject.java
@@ -0,0 +1,33 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform;
+
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.PerformCheckThatAbstract;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.object.NotSaved;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.object.NotValid;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.object.Saved;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.object.Valid;
+
+public class CheckObject extends PerformCheckThatAbstract {
+
+    public CheckObject(final Perform.Mode mode) {
+        super("check object", OnMemberColumn.NOT_REQUIRED, mode, new Valid(), new NotValid(), new NotSaved(), new Saved());
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckProperty.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckProperty.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckProperty.java
new file mode 100644
index 0000000..e69d8c6
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckProperty.java
@@ -0,0 +1,37 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform;
+
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.Disabled;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.Hidden;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.PerformCheckThatAbstract;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.Usable;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.Visible;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.property.Contains;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.property.DoesNotContain;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.property.Empty;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.property.NotEmpty;
+
+public class CheckProperty extends PerformCheckThatAbstract {
+
+    public CheckProperty(final Perform.Mode mode) {
+        super("check property", OnMemberColumn.REQUIRED, mode, new Hidden(), new Visible(), new Disabled(), new Usable(), new Contains(), new DoesNotContain(), new Empty(), new NotEmpty());
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckRemoveFromCollection.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckRemoveFromCollection.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckRemoveFromCollection.java
new file mode 100644
index 0000000..a39c7fb
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckRemoveFromCollection.java
@@ -0,0 +1,31 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform;
+
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.AssertsValidity;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.PerformCheckThatAbstract;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.collections.ProposedRemoveFrom;
+
+public class CheckRemoveFromCollection extends PerformCheckThatAbstract {
+
+    public CheckRemoveFromCollection(final Perform.Mode mode) {
+        super("check remove from collection", OnMemberColumn.REQUIRED, mode, new ProposedRemoveFrom(AssertsValidity.VALID), new ProposedRemoveFrom(AssertsValidity.INVALID));
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckSetProperty.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckSetProperty.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckSetProperty.java
new file mode 100644
index 0000000..ea4a853
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckSetProperty.java
@@ -0,0 +1,31 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform;
+
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.AssertsValidity;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.PerformCheckThatAbstract;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.property.ProposedSet;
+
+public class CheckSetProperty extends PerformCheckThatAbstract {
+
+    public CheckSetProperty(final Perform.Mode mode) {
+        super("check set property", OnMemberColumn.REQUIRED, mode, new ProposedSet(AssertsValidity.VALID), new ProposedSet(AssertsValidity.INVALID));
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/ClearProperty.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/ClearProperty.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/ClearProperty.java
new file mode 100644
index 0000000..2568d42
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/ClearProperty.java
@@ -0,0 +1,67 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.consent.Consent;
+import org.apache.isis.core.metamodel.facets.properties.modify.PropertyClearFacet;
+import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
+import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
+import org.apache.isis.viewer.bdd.common.CellBinding;
+import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
+
+public class ClearProperty extends PerformAbstractTypeParams {
+
+    private ObjectAdapter result;
+
+    public ClearProperty(final Perform.Mode mode) {
+        super("clear property", Type.PROPERTY, NumParameters.ZERO, mode);
+    }
+
+    @Override
+    public void doHandle(final PerformContext performContext) throws ScenarioBoundValueException {
+
+        final ObjectAdapter onAdapter = performContext.getOnAdapter();
+        final ObjectMember nakedObjectMember = performContext.getObjectMember();
+
+        final OneToOneAssociation otoa = (OneToOneAssociation) nakedObjectMember;
+
+        // set
+        final PropertyClearFacet clearFacet = otoa.getFacet(PropertyClearFacet.class);
+        final CellBinding thatItBinding = performContext.getPeer().getThatItBinding();
+        if (clearFacet == null) {
+            throw ScenarioBoundValueException.current(thatItBinding, "(cannot clear)");
+        }
+
+        // validate setting to null
+        final Consent validConsent = otoa.isAssociationValid(onAdapter, null);
+        if (validConsent.isVetoed()) {
+            throw ScenarioBoundValueException.current(thatItBinding, validConsent.getReason());
+        }
+
+        clearFacet.clearProperty(onAdapter);
+
+    }
+
+    @Override
+    public ObjectAdapter getResult() {
+        return result;
+    }
+
+}


[10/19] ISIS-463: mothballing BDD viewer

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/java/viewer/bdd/common/BootstrapInPrototypeMode.java
----------------------------------------------------------------------
diff --git a/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/java/viewer/bdd/common/BootstrapInPrototypeMode.java b/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/java/viewer/bdd/common/BootstrapInPrototypeMode.java
deleted file mode 100644
index 64c7d9f..0000000
--- a/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/java/viewer/bdd/common/BootstrapInPrototypeMode.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package viewer.bdd.common;
-
-import org.apache.isis.viewer.bdd.concordion.AbstractIsisConcordionScenario;
-
-public class BootstrapInPrototypeMode extends AbstractIsisConcordionScenario {
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/java/viewer/bdd/common/ToDoItems.java
----------------------------------------------------------------------
diff --git a/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/java/viewer/bdd/common/ToDoItems.java b/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/java/viewer/bdd/common/ToDoItems.java
deleted file mode 100644
index 7b13f27..0000000
--- a/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/java/viewer/bdd/common/ToDoItems.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package viewer.bdd.common;
-
-import org.apache.isis.viewer.bdd.concordion.AbstractIsisConcordionScenario;
-
-public class ToDoItems extends AbstractIsisConcordionScenario {
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/java/viewer/bdd/stories/AllStories.java
----------------------------------------------------------------------
diff --git a/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/java/viewer/bdd/stories/AllStories.java b/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/java/viewer/bdd/stories/AllStories.java
deleted file mode 100644
index cd172c7..0000000
--- a/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/java/viewer/bdd/stories/AllStories.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package viewer.bdd.stories;
-
-import viewer.bdd.AbstractApplicationStory;
-
-public class AllStories extends AbstractApplicationStory {
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/java/viewer/bdd/stories/todo/Fixtures.java
----------------------------------------------------------------------
diff --git a/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/java/viewer/bdd/stories/todo/Fixtures.java b/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/java/viewer/bdd/stories/todo/Fixtures.java
deleted file mode 100644
index eeb8895..0000000
--- a/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/java/viewer/bdd/stories/todo/Fixtures.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package viewer.bdd.stories.todo;
-
-import viewer.bdd.AbstractApplicationStory;
-
-public class Fixtures extends AbstractApplicationStory {
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/java/viewer/bdd/stories/todo/Index.java
----------------------------------------------------------------------
diff --git a/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/java/viewer/bdd/stories/todo/Index.java b/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/java/viewer/bdd/stories/todo/Index.java
deleted file mode 100644
index bdf0259..0000000
--- a/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/java/viewer/bdd/stories/todo/Index.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package viewer.bdd.stories.todo;
-
-import viewer.bdd.AbstractApplicationStory;
-
-public class Index extends AbstractApplicationStory {
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/java/viewer/bdd/stories/todo/ScenarioMarkItemAsDone.java
----------------------------------------------------------------------
diff --git a/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/java/viewer/bdd/stories/todo/ScenarioMarkItemAsDone.java b/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/java/viewer/bdd/stories/todo/ScenarioMarkItemAsDone.java
deleted file mode 100644
index b4715e2..0000000
--- a/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/java/viewer/bdd/stories/todo/ScenarioMarkItemAsDone.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package viewer.bdd.stories.todo;
-
-import viewer.bdd.AbstractApplicationStory;
-
-public class ScenarioMarkItemAsDone extends AbstractApplicationStory {
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/resources/dtd/xhtml-lat1.ent
----------------------------------------------------------------------
diff --git a/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/resources/dtd/xhtml-lat1.ent b/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/resources/dtd/xhtml-lat1.ent
deleted file mode 100644
index ffee223..0000000
--- a/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/resources/dtd/xhtml-lat1.ent
+++ /dev/null
@@ -1,196 +0,0 @@
-<!-- Portions (C) International Organization for Standardization 1986
-     Permission to copy in any form is granted for use with
-     conforming SGML systems and applications as defined in
-     ISO 8879, provided this notice is included in all copies.
--->
-<!-- Character entity set. Typical invocation:
-    <!ENTITY % HTMLlat1 PUBLIC
-       "-//W3C//ENTITIES Latin 1 for XHTML//EN"
-       "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent">
-    %HTMLlat1;
--->
-
-<!ENTITY nbsp   "&#160;"> <!-- no-break space = non-breaking space,
-                                  U+00A0 ISOnum -->
-<!ENTITY iexcl  "&#161;"> <!-- inverted exclamation mark, U+00A1 ISOnum -->
-<!ENTITY cent   "&#162;"> <!-- cent sign, U+00A2 ISOnum -->
-<!ENTITY pound  "&#163;"> <!-- pound sign, U+00A3 ISOnum -->
-<!ENTITY curren "&#164;"> <!-- currency sign, U+00A4 ISOnum -->
-<!ENTITY yen    "&#165;"> <!-- yen sign = yuan sign, U+00A5 ISOnum -->
-<!ENTITY brvbar "&#166;"> <!-- broken bar = broken vertical bar,
-                                  U+00A6 ISOnum -->
-<!ENTITY sect   "&#167;"> <!-- section sign, U+00A7 ISOnum -->
-<!ENTITY uml    "&#168;"> <!-- diaeresis = spacing diaeresis,
-                                  U+00A8 ISOdia -->
-<!ENTITY copy   "&#169;"> <!-- copyright sign, U+00A9 ISOnum -->
-<!ENTITY ordf   "&#170;"> <!-- feminine ordinal indicator, U+00AA ISOnum -->
-<!ENTITY laquo  "&#171;"> <!-- left-pointing double angle quotation mark
-                                  = left pointing guillemet, U+00AB ISOnum -->
-<!ENTITY not    "&#172;"> <!-- not sign = angled dash,
-                                  U+00AC ISOnum -->
-<!ENTITY shy    "&#173;"> <!-- soft hyphen = discretionary hyphen,
-                                  U+00AD ISOnum -->
-<!ENTITY reg    "&#174;"> <!-- registered sign = registered trade mark sign,
-                                  U+00AE ISOnum -->
-<!ENTITY macr   "&#175;"> <!-- macron = spacing macron = overline
-                                  = APL overbar, U+00AF ISOdia -->
-<!ENTITY deg    "&#176;"> <!-- degree sign, U+00B0 ISOnum -->
-<!ENTITY plusmn "&#177;"> <!-- plus-minus sign = plus-or-minus sign,
-                                  U+00B1 ISOnum -->
-<!ENTITY sup2   "&#178;"> <!-- superscript two = superscript digit two
-                                  = squared, U+00B2 ISOnum -->
-<!ENTITY sup3   "&#179;"> <!-- superscript three = superscript digit three
-                                  = cubed, U+00B3 ISOnum -->
-<!ENTITY acute  "&#180;"> <!-- acute accent = spacing acute,
-                                  U+00B4 ISOdia -->
-<!ENTITY micro  "&#181;"> <!-- micro sign, U+00B5 ISOnum -->
-<!ENTITY para   "&#182;"> <!-- pilcrow sign = paragraph sign,
-                                  U+00B6 ISOnum -->
-<!ENTITY middot "&#183;"> <!-- middle dot = Georgian comma
-                                  = Greek middle dot, U+00B7 ISOnum -->
-<!ENTITY cedil  "&#184;"> <!-- cedilla = spacing cedilla, U+00B8 ISOdia -->
-<!ENTITY sup1   "&#185;"> <!-- superscript one = superscript digit one,
-                                  U+00B9 ISOnum -->
-<!ENTITY ordm   "&#186;"> <!-- masculine ordinal indicator,
-                                  U+00BA ISOnum -->
-<!ENTITY raquo  "&#187;"> <!-- right-pointing double angle quotation mark
-                                  = right pointing guillemet, U+00BB ISOnum -->
-<!ENTITY frac14 "&#188;"> <!-- vulgar fraction one quarter
-                                  = fraction one quarter, U+00BC ISOnum -->
-<!ENTITY frac12 "&#189;"> <!-- vulgar fraction one half
-                                  = fraction one half, U+00BD ISOnum -->
-<!ENTITY frac34 "&#190;"> <!-- vulgar fraction three quarters
-                                  = fraction three quarters, U+00BE ISOnum -->
-<!ENTITY iquest "&#191;"> <!-- inverted question mark
-                                  = turned question mark, U+00BF ISOnum -->
-<!ENTITY Agrave "&#192;"> <!-- latin capital letter A with grave
-                                  = latin capital letter A grave,
-                                  U+00C0 ISOlat1 -->
-<!ENTITY Aacute "&#193;"> <!-- latin capital letter A with acute,
-                                  U+00C1 ISOlat1 -->
-<!ENTITY Acirc  "&#194;"> <!-- latin capital letter A with circumflex,
-                                  U+00C2 ISOlat1 -->
-<!ENTITY Atilde "&#195;"> <!-- latin capital letter A with tilde,
-                                  U+00C3 ISOlat1 -->
-<!ENTITY Auml   "&#196;"> <!-- latin capital letter A with diaeresis,
-                                  U+00C4 ISOlat1 -->
-<!ENTITY Aring  "&#197;"> <!-- latin capital letter A with ring above
-                                  = latin capital letter A ring,
-                                  U+00C5 ISOlat1 -->
-<!ENTITY AElig  "&#198;"> <!-- latin capital letter AE
-                                  = latin capital ligature AE,
-                                  U+00C6 ISOlat1 -->
-<!ENTITY Ccedil "&#199;"> <!-- latin capital letter C with cedilla,
-                                  U+00C7 ISOlat1 -->
-<!ENTITY Egrave "&#200;"> <!-- latin capital letter E with grave,
-                                  U+00C8 ISOlat1 -->
-<!ENTITY Eacute "&#201;"> <!-- latin capital letter E with acute,
-                                  U+00C9 ISOlat1 -->
-<!ENTITY Ecirc  "&#202;"> <!-- latin capital letter E with circumflex,
-                                  U+00CA ISOlat1 -->
-<!ENTITY Euml   "&#203;"> <!-- latin capital letter E with diaeresis,
-                                  U+00CB ISOlat1 -->
-<!ENTITY Igrave "&#204;"> <!-- latin capital letter I with grave,
-                                  U+00CC ISOlat1 -->
-<!ENTITY Iacute "&#205;"> <!-- latin capital letter I with acute,
-                                  U+00CD ISOlat1 -->
-<!ENTITY Icirc  "&#206;"> <!-- latin capital letter I with circumflex,
-                                  U+00CE ISOlat1 -->
-<!ENTITY Iuml   "&#207;"> <!-- latin capital letter I with diaeresis,
-                                  U+00CF ISOlat1 -->
-<!ENTITY ETH    "&#208;"> <!-- latin capital letter ETH, U+00D0 ISOlat1 -->
-<!ENTITY Ntilde "&#209;"> <!-- latin capital letter N with tilde,
-                                  U+00D1 ISOlat1 -->
-<!ENTITY Ograve "&#210;"> <!-- latin capital letter O with grave,
-                                  U+00D2 ISOlat1 -->
-<!ENTITY Oacute "&#211;"> <!-- latin capital letter O with acute,
-                                  U+00D3 ISOlat1 -->
-<!ENTITY Ocirc  "&#212;"> <!-- latin capital letter O with circumflex,
-                                  U+00D4 ISOlat1 -->
-<!ENTITY Otilde "&#213;"> <!-- latin capital letter O with tilde,
-                                  U+00D5 ISOlat1 -->
-<!ENTITY Ouml   "&#214;"> <!-- latin capital letter O with diaeresis,
-                                  U+00D6 ISOlat1 -->
-<!ENTITY times  "&#215;"> <!-- multiplication sign, U+00D7 ISOnum -->
-<!ENTITY Oslash "&#216;"> <!-- latin capital letter O with stroke
-                                  = latin capital letter O slash,
-                                  U+00D8 ISOlat1 -->
-<!ENTITY Ugrave "&#217;"> <!-- latin capital letter U with grave,
-                                  U+00D9 ISOlat1 -->
-<!ENTITY Uacute "&#218;"> <!-- latin capital letter U with acute,
-                                  U+00DA ISOlat1 -->
-<!ENTITY Ucirc  "&#219;"> <!-- latin capital letter U with circumflex,
-                                  U+00DB ISOlat1 -->
-<!ENTITY Uuml   "&#220;"> <!-- latin capital letter U with diaeresis,
-                                  U+00DC ISOlat1 -->
-<!ENTITY Yacute "&#221;"> <!-- latin capital letter Y with acute,
-                                  U+00DD ISOlat1 -->
-<!ENTITY THORN  "&#222;"> <!-- latin capital letter THORN,
-                                  U+00DE ISOlat1 -->
-<!ENTITY szlig  "&#223;"> <!-- latin small letter sharp s = ess-zed,
-                                  U+00DF ISOlat1 -->
-<!ENTITY agrave "&#224;"> <!-- latin small letter a with grave
-                                  = latin small letter a grave,
-                                  U+00E0 ISOlat1 -->
-<!ENTITY aacute "&#225;"> <!-- latin small letter a with acute,
-                                  U+00E1 ISOlat1 -->
-<!ENTITY acirc  "&#226;"> <!-- latin small letter a with circumflex,
-                                  U+00E2 ISOlat1 -->
-<!ENTITY atilde "&#227;"> <!-- latin small letter a with tilde,
-                                  U+00E3 ISOlat1 -->
-<!ENTITY auml   "&#228;"> <!-- latin small letter a with diaeresis,
-                                  U+00E4 ISOlat1 -->
-<!ENTITY aring  "&#229;"> <!-- latin small letter a with ring above
-                                  = latin small letter a ring,
-                                  U+00E5 ISOlat1 -->
-<!ENTITY aelig  "&#230;"> <!-- latin small letter ae
-                                  = latin small ligature ae, U+00E6 ISOlat1 -->
-<!ENTITY ccedil "&#231;"> <!-- latin small letter c with cedilla,
-                                  U+00E7 ISOlat1 -->
-<!ENTITY egrave "&#232;"> <!-- latin small letter e with grave,
-                                  U+00E8 ISOlat1 -->
-<!ENTITY eacute "&#233;"> <!-- latin small letter e with acute,
-                                  U+00E9 ISOlat1 -->
-<!ENTITY ecirc  "&#234;"> <!-- latin small letter e with circumflex,
-                                  U+00EA ISOlat1 -->
-<!ENTITY euml   "&#235;"> <!-- latin small letter e with diaeresis,
-                                  U+00EB ISOlat1 -->
-<!ENTITY igrave "&#236;"> <!-- latin small letter i with grave,
-                                  U+00EC ISOlat1 -->
-<!ENTITY iacute "&#237;"> <!-- latin small letter i with acute,
-                                  U+00ED ISOlat1 -->
-<!ENTITY icirc  "&#238;"> <!-- latin small letter i with circumflex,
-                                  U+00EE ISOlat1 -->
-<!ENTITY iuml   "&#239;"> <!-- latin small letter i with diaeresis,
-                                  U+00EF ISOlat1 -->
-<!ENTITY eth    "&#240;"> <!-- latin small letter eth, U+00F0 ISOlat1 -->
-<!ENTITY ntilde "&#241;"> <!-- latin small letter n with tilde,
-                                  U+00F1 ISOlat1 -->
-<!ENTITY ograve "&#242;"> <!-- latin small letter o with grave,
-                                  U+00F2 ISOlat1 -->
-<!ENTITY oacute "&#243;"> <!-- latin small letter o with acute,
-                                  U+00F3 ISOlat1 -->
-<!ENTITY ocirc  "&#244;"> <!-- latin small letter o with circumflex,
-                                  U+00F4 ISOlat1 -->
-<!ENTITY otilde "&#245;"> <!-- latin small letter o with tilde,
-                                  U+00F5 ISOlat1 -->
-<!ENTITY ouml   "&#246;"> <!-- latin small letter o with diaeresis,
-                                  U+00F6 ISOlat1 -->
-<!ENTITY divide "&#247;"> <!-- division sign, U+00F7 ISOnum -->
-<!ENTITY oslash "&#248;"> <!-- latin small letter o with stroke,
-                                  = latin small letter o slash,
-                                  U+00F8 ISOlat1 -->
-<!ENTITY ugrave "&#249;"> <!-- latin small letter u with grave,
-                                  U+00F9 ISOlat1 -->
-<!ENTITY uacute "&#250;"> <!-- latin small letter u with acute,
-                                  U+00FA ISOlat1 -->
-<!ENTITY ucirc  "&#251;"> <!-- latin small letter u with circumflex,
-                                  U+00FB ISOlat1 -->
-<!ENTITY uuml   "&#252;"> <!-- latin small letter u with diaeresis,
-                                  U+00FC ISOlat1 -->
-<!ENTITY yacute "&#253;"> <!-- latin small letter y with acute,
-                                  U+00FD ISOlat1 -->
-<!ENTITY thorn  "&#254;"> <!-- latin small letter thorn,
-                                  U+00FE ISOlat1 -->
-<!ENTITY yuml   "&#255;"> <!-- latin small letter y with diaeresis,
-                                  U+00FF ISOlat1 -->

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/resources/dtd/xhtml-special.ent
----------------------------------------------------------------------
diff --git a/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/resources/dtd/xhtml-special.ent b/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/resources/dtd/xhtml-special.ent
deleted file mode 100644
index ca358b2..0000000
--- a/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/resources/dtd/xhtml-special.ent
+++ /dev/null
@@ -1,80 +0,0 @@
-<!-- Special characters for XHTML -->
-
-<!-- Character entity set. Typical invocation:
-     <!ENTITY % HTMLspecial PUBLIC
-        "-//W3C//ENTITIES Special for XHTML//EN"
-        "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent">
-     %HTMLspecial;
--->
-
-<!-- Portions (C) International Organization for Standardization 1986:
-     Permission to copy in any form is granted for use with
-     conforming SGML systems and applications as defined in
-     ISO 8879, provided this notice is included in all copies.
--->
-
-<!-- Relevant ISO entity set is given unless names are newly introduced.
-     New names (i.e., not in ISO 8879 list) do not clash with any
-     existing ISO 8879 entity names. ISO 10646 character numbers
-     are given for each character, in hex. values are decimal
-     conversions of the ISO 10646 values and refer to the document
-     character set. Names are Unicode names. 
--->
-
-<!-- C0 Controls and Basic Latin -->
-<!ENTITY quot    "&#34;"> <!--  quotation mark, U+0022 ISOnum -->
-<!ENTITY amp     "&#38;#38;"> <!--  ampersand, U+0026 ISOnum -->
-<!ENTITY lt      "&#38;#60;"> <!--  less-than sign, U+003C ISOnum -->
-<!ENTITY gt      "&#62;"> <!--  greater-than sign, U+003E ISOnum -->
-<!ENTITY apos	 "&#39;"> <!--  apostrophe = APL quote, U+0027 ISOnum -->
-
-<!-- Latin Extended-A -->
-<!ENTITY OElig   "&#338;"> <!--  latin capital ligature OE,
-                                    U+0152 ISOlat2 -->
-<!ENTITY oelig   "&#339;"> <!--  latin small ligature oe, U+0153 ISOlat2 -->
-<!-- ligature is a misnomer, this is a separate character in some languages -->
-<!ENTITY Scaron  "&#352;"> <!--  latin capital letter S with caron,
-                                    U+0160 ISOlat2 -->
-<!ENTITY scaron  "&#353;"> <!--  latin small letter s with caron,
-                                    U+0161 ISOlat2 -->
-<!ENTITY Yuml    "&#376;"> <!--  latin capital letter Y with diaeresis,
-                                    U+0178 ISOlat2 -->
-
-<!-- Spacing Modifier Letters -->
-<!ENTITY circ    "&#710;"> <!--  modifier letter circumflex accent,
-                                    U+02C6 ISOpub -->
-<!ENTITY tilde   "&#732;"> <!--  small tilde, U+02DC ISOdia -->
-
-<!-- General Punctuation -->
-<!ENTITY ensp    "&#8194;"> <!-- en space, U+2002 ISOpub -->
-<!ENTITY emsp    "&#8195;"> <!-- em space, U+2003 ISOpub -->
-<!ENTITY thinsp  "&#8201;"> <!-- thin space, U+2009 ISOpub -->
-<!ENTITY zwnj    "&#8204;"> <!-- zero width non-joiner,
-                                    U+200C NEW RFC 2070 -->
-<!ENTITY zwj     "&#8205;"> <!-- zero width joiner, U+200D NEW RFC 2070 -->
-<!ENTITY lrm     "&#8206;"> <!-- left-to-right mark, U+200E NEW RFC 2070 -->
-<!ENTITY rlm     "&#8207;"> <!-- right-to-left mark, U+200F NEW RFC 2070 -->
-<!ENTITY ndash   "&#8211;"> <!-- en dash, U+2013 ISOpub -->
-<!ENTITY mdash   "&#8212;"> <!-- em dash, U+2014 ISOpub -->
-<!ENTITY lsquo   "&#8216;"> <!-- left single quotation mark,
-                                    U+2018 ISOnum -->
-<!ENTITY rsquo   "&#8217;"> <!-- right single quotation mark,
-                                    U+2019 ISOnum -->
-<!ENTITY sbquo   "&#8218;"> <!-- single low-9 quotation mark, U+201A NEW -->
-<!ENTITY ldquo   "&#8220;"> <!-- left double quotation mark,
-                                    U+201C ISOnum -->
-<!ENTITY rdquo   "&#8221;"> <!-- right double quotation mark,
-                                    U+201D ISOnum -->
-<!ENTITY bdquo   "&#8222;"> <!-- double low-9 quotation mark, U+201E NEW -->
-<!ENTITY dagger  "&#8224;"> <!-- dagger, U+2020 ISOpub -->
-<!ENTITY Dagger  "&#8225;"> <!-- double dagger, U+2021 ISOpub -->
-<!ENTITY permil  "&#8240;"> <!-- per mille sign, U+2030 ISOtech -->
-<!ENTITY lsaquo  "&#8249;"> <!-- single left-pointing angle quotation mark,
-                                    U+2039 ISO proposed -->
-<!-- lsaquo is proposed but not yet ISO standardized -->
-<!ENTITY rsaquo  "&#8250;"> <!-- single right-pointing angle quotation mark,
-                                    U+203A ISO proposed -->
-<!-- rsaquo is proposed but not yet ISO standardized -->
-
-<!-- Currency Symbols -->
-<!ENTITY euro   "&#8364;"> <!--  euro sign, U+20AC NEW -->

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/resources/dtd/xhtml-symbol.ent
----------------------------------------------------------------------
diff --git a/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/resources/dtd/xhtml-symbol.ent b/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/resources/dtd/xhtml-symbol.ent
deleted file mode 100644
index 63c2abf..0000000
--- a/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/resources/dtd/xhtml-symbol.ent
+++ /dev/null
@@ -1,237 +0,0 @@
-<!-- Mathematical, Greek and Symbolic characters for XHTML -->
-
-<!-- Character entity set. Typical invocation:
-     <!ENTITY % HTMLsymbol PUBLIC
-        "-//W3C//ENTITIES Symbols for XHTML//EN"
-        "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent">
-     %HTMLsymbol;
--->
-
-<!-- Portions (C) International Organization for Standardization 1986:
-     Permission to copy in any form is granted for use with
-     conforming SGML systems and applications as defined in
-     ISO 8879, provided this notice is included in all copies.
--->
-
-<!-- Relevant ISO entity set is given unless names are newly introduced.
-     New names (i.e., not in ISO 8879 list) do not clash with any
-     existing ISO 8879 entity names. ISO 10646 character numbers
-     are given for each character, in hex. values are decimal
-     conversions of the ISO 10646 values and refer to the document
-     character set. Names are Unicode names. 
--->
-
-<!-- Latin Extended-B -->
-<!ENTITY fnof     "&#402;"> <!-- latin small letter f with hook = function
-                                    = florin, U+0192 ISOtech -->
-
-<!-- Greek -->
-<!ENTITY Alpha    "&#913;"> <!-- greek capital letter alpha, U+0391 -->
-<!ENTITY Beta     "&#914;"> <!-- greek capital letter beta, U+0392 -->
-<!ENTITY Gamma    "&#915;"> <!-- greek capital letter gamma,
-                                    U+0393 ISOgrk3 -->
-<!ENTITY Delta    "&#916;"> <!-- greek capital letter delta,
-                                    U+0394 ISOgrk3 -->
-<!ENTITY Epsilon  "&#917;"> <!-- greek capital letter epsilon, U+0395 -->
-<!ENTITY Zeta     "&#918;"> <!-- greek capital letter zeta, U+0396 -->
-<!ENTITY Eta      "&#919;"> <!-- greek capital letter eta, U+0397 -->
-<!ENTITY Theta    "&#920;"> <!-- greek capital letter theta,
-                                    U+0398 ISOgrk3 -->
-<!ENTITY Iota     "&#921;"> <!-- greek capital letter iota, U+0399 -->
-<!ENTITY Kappa    "&#922;"> <!-- greek capital letter kappa, U+039A -->
-<!ENTITY Lambda   "&#923;"> <!-- greek capital letter lamda,
-                                    U+039B ISOgrk3 -->
-<!ENTITY Mu       "&#924;"> <!-- greek capital letter mu, U+039C -->
-<!ENTITY Nu       "&#925;"> <!-- greek capital letter nu, U+039D -->
-<!ENTITY Xi       "&#926;"> <!-- greek capital letter xi, U+039E ISOgrk3 -->
-<!ENTITY Omicron  "&#927;"> <!-- greek capital letter omicron, U+039F -->
-<!ENTITY Pi       "&#928;"> <!-- greek capital letter pi, U+03A0 ISOgrk3 -->
-<!ENTITY Rho      "&#929;"> <!-- greek capital letter rho, U+03A1 -->
-<!-- there is no Sigmaf, and no U+03A2 character either -->
-<!ENTITY Sigma    "&#931;"> <!-- greek capital letter sigma,
-                                    U+03A3 ISOgrk3 -->
-<!ENTITY Tau      "&#932;"> <!-- greek capital letter tau, U+03A4 -->
-<!ENTITY Upsilon  "&#933;"> <!-- greek capital letter upsilon,
-                                    U+03A5 ISOgrk3 -->
-<!ENTITY Phi      "&#934;"> <!-- greek capital letter phi,
-                                    U+03A6 ISOgrk3 -->
-<!ENTITY Chi      "&#935;"> <!-- greek capital letter chi, U+03A7 -->
-<!ENTITY Psi      "&#936;"> <!-- greek capital letter psi,
-                                    U+03A8 ISOgrk3 -->
-<!ENTITY Omega    "&#937;"> <!-- greek capital letter omega,
-                                    U+03A9 ISOgrk3 -->
-
-<!ENTITY alpha    "&#945;"> <!-- greek small letter alpha,
-                                    U+03B1 ISOgrk3 -->
-<!ENTITY beta     "&#946;"> <!-- greek small letter beta, U+03B2 ISOgrk3 -->
-<!ENTITY gamma    "&#947;"> <!-- greek small letter gamma,
-                                    U+03B3 ISOgrk3 -->
-<!ENTITY delta    "&#948;"> <!-- greek small letter delta,
-                                    U+03B4 ISOgrk3 -->
-<!ENTITY epsilon  "&#949;"> <!-- greek small letter epsilon,
-                                    U+03B5 ISOgrk3 -->
-<!ENTITY zeta     "&#950;"> <!-- greek small letter zeta, U+03B6 ISOgrk3 -->
-<!ENTITY eta      "&#951;"> <!-- greek small letter eta, U+03B7 ISOgrk3 -->
-<!ENTITY theta    "&#952;"> <!-- greek small letter theta,
-                                    U+03B8 ISOgrk3 -->
-<!ENTITY iota     "&#953;"> <!-- greek small letter iota, U+03B9 ISOgrk3 -->
-<!ENTITY kappa    "&#954;"> <!-- greek small letter kappa,
-                                    U+03BA ISOgrk3 -->
-<!ENTITY lambda   "&#955;"> <!-- greek small letter lamda,
-                                    U+03BB ISOgrk3 -->
-<!ENTITY mu       "&#956;"> <!-- greek small letter mu, U+03BC ISOgrk3 -->
-<!ENTITY nu       "&#957;"> <!-- greek small letter nu, U+03BD ISOgrk3 -->
-<!ENTITY xi       "&#958;"> <!-- greek small letter xi, U+03BE ISOgrk3 -->
-<!ENTITY omicron  "&#959;"> <!-- greek small letter omicron, U+03BF NEW -->
-<!ENTITY pi       "&#960;"> <!-- greek small letter pi, U+03C0 ISOgrk3 -->
-<!ENTITY rho      "&#961;"> <!-- greek small letter rho, U+03C1 ISOgrk3 -->
-<!ENTITY sigmaf   "&#962;"> <!-- greek small letter final sigma,
-                                    U+03C2 ISOgrk3 -->
-<!ENTITY sigma    "&#963;"> <!-- greek small letter sigma,
-                                    U+03C3 ISOgrk3 -->
-<!ENTITY tau      "&#964;"> <!-- greek small letter tau, U+03C4 ISOgrk3 -->
-<!ENTITY upsilon  "&#965;"> <!-- greek small letter upsilon,
-                                    U+03C5 ISOgrk3 -->
-<!ENTITY phi      "&#966;"> <!-- greek small letter phi, U+03C6 ISOgrk3 -->
-<!ENTITY chi      "&#967;"> <!-- greek small letter chi, U+03C7 ISOgrk3 -->
-<!ENTITY psi      "&#968;"> <!-- greek small letter psi, U+03C8 ISOgrk3 -->
-<!ENTITY omega    "&#969;"> <!-- greek small letter omega,
-                                    U+03C9 ISOgrk3 -->
-<!ENTITY thetasym "&#977;"> <!-- greek theta symbol,
-                                    U+03D1 NEW -->
-<!ENTITY upsih    "&#978;"> <!-- greek upsilon with hook symbol,
-                                    U+03D2 NEW -->
-<!ENTITY piv      "&#982;"> <!-- greek pi symbol, U+03D6 ISOgrk3 -->
-
-<!-- General Punctuation -->
-<!ENTITY bull     "&#8226;"> <!-- bullet = black small circle,
-                                     U+2022 ISOpub  -->
-<!-- bullet is NOT the same as bullet operator, U+2219 -->
-<!ENTITY hellip   "&#8230;"> <!-- horizontal ellipsis = three dot leader,
-                                     U+2026 ISOpub  -->
-<!ENTITY prime    "&#8242;"> <!-- prime = minutes = feet, U+2032 ISOtech -->
-<!ENTITY Prime    "&#8243;"> <!-- double prime = seconds = inches,
-                                     U+2033 ISOtech -->
-<!ENTITY oline    "&#8254;"> <!-- overline = spacing overscore,
-                                     U+203E NEW -->
-<!ENTITY frasl    "&#8260;"> <!-- fraction slash, U+2044 NEW -->
-
-<!-- Letterlike Symbols -->
-<!ENTITY weierp   "&#8472;"> <!-- script capital P = power set
-                                     = Weierstrass p, U+2118 ISOamso -->
-<!ENTITY image    "&#8465;"> <!-- black-letter capital I = imaginary part,
-                                     U+2111 ISOamso -->
-<!ENTITY real     "&#8476;"> <!-- black-letter capital R = real part symbol,
-                                     U+211C ISOamso -->
-<!ENTITY trade    "&#8482;"> <!-- trade mark sign, U+2122 ISOnum -->
-<!ENTITY alefsym  "&#8501;"> <!-- alef symbol = first transfinite cardinal,
-                                     U+2135 NEW -->
-<!-- alef symbol is NOT the same as hebrew letter alef,
-     U+05D0 although the same glyph could be used to depict both characters -->
-
-<!-- Arrows -->
-<!ENTITY larr     "&#8592;"> <!-- leftwards arrow, U+2190 ISOnum -->
-<!ENTITY uarr     "&#8593;"> <!-- upwards arrow, U+2191 ISOnum-->
-<!ENTITY rarr     "&#8594;"> <!-- rightwards arrow, U+2192 ISOnum -->
-<!ENTITY darr     "&#8595;"> <!-- downwards arrow, U+2193 ISOnum -->
-<!ENTITY harr     "&#8596;"> <!-- left right arrow, U+2194 ISOamsa -->
-<!ENTITY crarr    "&#8629;"> <!-- downwards arrow with corner leftwards
-                                     = carriage return, U+21B5 NEW -->
-<!ENTITY lArr     "&#8656;"> <!-- leftwards double arrow, U+21D0 ISOtech -->
-<!-- Unicode does not say that lArr is the same as the 'is implied by' arrow
-    but also does not have any other character for that function. So lArr can
-    be used for 'is implied by' as ISOtech suggests -->
-<!ENTITY uArr     "&#8657;"> <!-- upwards double arrow, U+21D1 ISOamsa -->
-<!ENTITY rArr     "&#8658;"> <!-- rightwards double arrow,
-                                     U+21D2 ISOtech -->
-<!-- Unicode does not say this is the 'implies' character but does not have 
-     another character with this function so rArr can be used for 'implies'
-     as ISOtech suggests -->
-<!ENTITY dArr     "&#8659;"> <!-- downwards double arrow, U+21D3 ISOamsa -->
-<!ENTITY hArr     "&#8660;"> <!-- left right double arrow,
-                                     U+21D4 ISOamsa -->
-
-<!-- Mathematical Operators -->
-<!ENTITY forall   "&#8704;"> <!-- for all, U+2200 ISOtech -->
-<!ENTITY part     "&#8706;"> <!-- partial differential, U+2202 ISOtech  -->
-<!ENTITY exist    "&#8707;"> <!-- there exists, U+2203 ISOtech -->
-<!ENTITY empty    "&#8709;"> <!-- empty set = null set, U+2205 ISOamso -->
-<!ENTITY nabla    "&#8711;"> <!-- nabla = backward difference,
-                                     U+2207 ISOtech -->
-<!ENTITY isin     "&#8712;"> <!-- element of, U+2208 ISOtech -->
-<!ENTITY notin    "&#8713;"> <!-- not an element of, U+2209 ISOtech -->
-<!ENTITY ni       "&#8715;"> <!-- contains as member, U+220B ISOtech -->
-<!ENTITY prod     "&#8719;"> <!-- n-ary product = product sign,
-                                     U+220F ISOamsb -->
-<!-- prod is NOT the same character as U+03A0 'greek capital letter pi' though
-     the same glyph might be used for both -->
-<!ENTITY sum      "&#8721;"> <!-- n-ary summation, U+2211 ISOamsb -->
-<!-- sum is NOT the same character as U+03A3 'greek capital letter sigma'
-     though the same glyph might be used for both -->
-<!ENTITY minus    "&#8722;"> <!-- minus sign, U+2212 ISOtech -->
-<!ENTITY lowast   "&#8727;"> <!-- asterisk operator, U+2217 ISOtech -->
-<!ENTITY radic    "&#8730;"> <!-- square root = radical sign,
-                                     U+221A ISOtech -->
-<!ENTITY prop     "&#8733;"> <!-- proportional to, U+221D ISOtech -->
-<!ENTITY infin    "&#8734;"> <!-- infinity, U+221E ISOtech -->
-<!ENTITY ang      "&#8736;"> <!-- angle, U+2220 ISOamso -->
-<!ENTITY and      "&#8743;"> <!-- logical and = wedge, U+2227 ISOtech -->
-<!ENTITY or       "&#8744;"> <!-- logical or = vee, U+2228 ISOtech -->
-<!ENTITY cap      "&#8745;"> <!-- intersection = cap, U+2229 ISOtech -->
-<!ENTITY cup      "&#8746;"> <!-- union = cup, U+222A ISOtech -->
-<!ENTITY int      "&#8747;"> <!-- integral, U+222B ISOtech -->
-<!ENTITY there4   "&#8756;"> <!-- therefore, U+2234 ISOtech -->
-<!ENTITY sim      "&#8764;"> <!-- tilde operator = varies with = similar to,
-                                     U+223C ISOtech -->
-<!-- tilde operator is NOT the same character as the tilde, U+007E,
-     although the same glyph might be used to represent both  -->
-<!ENTITY cong     "&#8773;"> <!-- approximately equal to, U+2245 ISOtech -->
-<!ENTITY asymp    "&#8776;"> <!-- almost equal to = asymptotic to,
-                                     U+2248 ISOamsr -->
-<!ENTITY ne       "&#8800;"> <!-- not equal to, U+2260 ISOtech -->
-<!ENTITY equiv    "&#8801;"> <!-- identical to, U+2261 ISOtech -->
-<!ENTITY le       "&#8804;"> <!-- less-than or equal to, U+2264 ISOtech -->
-<!ENTITY ge       "&#8805;"> <!-- greater-than or equal to,
-                                     U+2265 ISOtech -->
-<!ENTITY sub      "&#8834;"> <!-- subset of, U+2282 ISOtech -->
-<!ENTITY sup      "&#8835;"> <!-- superset of, U+2283 ISOtech -->
-<!ENTITY nsub     "&#8836;"> <!-- not a subset of, U+2284 ISOamsn -->
-<!ENTITY sube     "&#8838;"> <!-- subset of or equal to, U+2286 ISOtech -->
-<!ENTITY supe     "&#8839;"> <!-- superset of or equal to,
-                                     U+2287 ISOtech -->
-<!ENTITY oplus    "&#8853;"> <!-- circled plus = direct sum,
-                                     U+2295 ISOamsb -->
-<!ENTITY otimes   "&#8855;"> <!-- circled times = vector product,
-                                     U+2297 ISOamsb -->
-<!ENTITY perp     "&#8869;"> <!-- up tack = orthogonal to = perpendicular,
-                                     U+22A5 ISOtech -->
-<!ENTITY sdot     "&#8901;"> <!-- dot operator, U+22C5 ISOamsb -->
-<!-- dot operator is NOT the same character as U+00B7 middle dot -->
-
-<!-- Miscellaneous Technical -->
-<!ENTITY lceil    "&#8968;"> <!-- left ceiling = APL upstile,
-                                     U+2308 ISOamsc  -->
-<!ENTITY rceil    "&#8969;"> <!-- right ceiling, U+2309 ISOamsc  -->
-<!ENTITY lfloor   "&#8970;"> <!-- left floor = APL downstile,
-                                     U+230A ISOamsc  -->
-<!ENTITY rfloor   "&#8971;"> <!-- right floor, U+230B ISOamsc  -->
-<!ENTITY lang     "&#9001;"> <!-- left-pointing angle bracket = bra,
-                                     U+2329 ISOtech -->
-<!-- lang is NOT the same character as U+003C 'less than sign' 
-     or U+2039 'single left-pointing angle quotation mark' -->
-<!ENTITY rang     "&#9002;"> <!-- right-pointing angle bracket = ket,
-                                     U+232A ISOtech -->
-<!-- rang is NOT the same character as U+003E 'greater than sign' 
-     or U+203A 'single right-pointing angle quotation mark' -->
-
-<!-- Geometric Shapes -->
-<!ENTITY loz      "&#9674;"> <!-- lozenge, U+25CA ISOpub -->
-
-<!-- Miscellaneous Symbols -->
-<!ENTITY spades   "&#9824;"> <!-- black spade suit, U+2660 ISOpub -->
-<!-- black here seems to mean filled as opposed to hollow -->
-<!ENTITY clubs    "&#9827;"> <!-- black club suit = shamrock,
-                                     U+2663 ISOpub -->
-<!ENTITY hearts   "&#9829;"> <!-- black heart suit = valentine,
-                                     U+2665 ISOpub -->
-<!ENTITY diams    "&#9830;"> <!-- black diamond suit, U+2666 ISOpub -->

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/resources/dtd/xhtml1-strict.dtd
----------------------------------------------------------------------
diff --git a/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/resources/dtd/xhtml1-strict.dtd b/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/resources/dtd/xhtml1-strict.dtd
deleted file mode 100644
index abced1d..0000000
--- a/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/resources/dtd/xhtml1-strict.dtd
+++ /dev/null
@@ -1,980 +0,0 @@
-<!--
-   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;
-  >
-

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/resources/viewer/bdd/common/BootstrapInPrototypeMode.html
----------------------------------------------------------------------
diff --git a/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/resources/viewer/bdd/common/BootstrapInPrototypeMode.html b/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/resources/viewer/bdd/common/BootstrapInPrototypeMode.html
deleted file mode 100644
index 8ee2cc3..0000000
--- a/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/resources/viewer/bdd/common/BootstrapInPrototypeMode.html
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-         http://www.apache.org/licenses/LICENSE-2.0
-         
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-<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" />
-<body>
-
-<p>
-The system:
-</p>
-<ul>
-<li>
-<p concordion:execute="#result=bootstrapIsis(#configDir,#deploymentType)">
-<span concordion:assertTrue="#result">bootstrapped</span> from
-config directory <span concordion:set="#configDir">../viewer-dnd/config</span>
-and running in <span concordion:set="#deploymentType">prototype</span>
-mode,
-</p>
-</li>
-<li>
-<p>with services: </p>
-<table concordion:execute="#result=aliasService(#aliasAs, #className)">
-	<tr>
-		<th concordion:set="#className">Class Name</th>
-		<th concordion:set="#aliasAs">aliasAs</th>
-		<th concordion:assertTrue="#result"/>
-	</tr>
-	<tr>
-		<td>dom.todo.ToDoItems</td>
-		<td>toDoItems</td>
-		<td>ok</td>
-	</tr>
-</table>
-</li>
-</ul>
-
-</body>
-
-</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/resources/viewer/bdd/common/ToDoItems.html
----------------------------------------------------------------------
diff --git a/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/resources/viewer/bdd/common/ToDoItems.html b/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/resources/viewer/bdd/common/ToDoItems.html
deleted file mode 100644
index d8d9c6a..0000000
--- a/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/resources/viewer/bdd/common/ToDoItems.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-         http://www.apache.org/licenses/LICENSE-2.0
-         
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-<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" />
-<body>
-
-<h3>Operational Data</h3>
-<p>With to do items (<span concordion:set="#className">dom.todo.ToDoItem</span>):
-</p>
-<table isis:execute="#result=setUpObject(#className, #alias, #description, #ownedBy, #done)">
-	<tr>
-        <th concordion:set="#alias">Alias</th>
-		<th concordion:set="#description">Description</th>
-		<th concordion:set="#done">Done</th>
-		<th concordion:set="#ownedBy">Owned By</th>
-		<th concordion:assertEquals="#result"/>
-	</tr>
-	<tr>
-        <td>item1</td>
-		<td>Buy milk</td>
-		<td>false</td>
-		<td>sven</td>
-		<td>ok</td>
-	</tr>
-	<tr>
-        <td>item2</td>
-        <td>Pick up laundry</td>
-        <td>false</td>
-        <td>sven</td>
-        <td>ok</td>
-	</tr>
-	<tr>
-        <td>item3</td>
-        <td>Buy stamps</td>
-        <td>false</td>
-        <td>sven</td>
-        <td>ok</td>
-	</tr>
-    <tr>
-        <td>item4</td>
-        <td>Write blog post</td>
-        <td>false</td>
-        <td>sven</td>
-        <td>ok</td>
-    </tr>
-    <tr>
-        <td>item5</td>
-        <td>Organize brown bag</td>
-        <td>false</td>
-        <td>sven</td>
-        <td>ok</td>
-    </tr>
-</table>
-
-</body>
-</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/resources/viewer/bdd/concordion.css
----------------------------------------------------------------------
diff --git a/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/resources/viewer/bdd/concordion.css b/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/resources/viewer/bdd/concordion.css
deleted file mode 100644
index f849431..0000000
--- a/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/resources/viewer/bdd/concordion.css
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-* {
-  font-family: Arial;
-}
-body {
-  padding: 32px;  
-}
-pre {
-  padding: 6px 28px 6px 28px;
-  background-color: #E8EEF7;
-}
-pre, pre *, code, code *, kbd {
-  font-family: Courier New, Courier;
-  font-size: 10pt;
-}
-h1, h1 * {
-  font-size: 24pt;
-}
-p, td, th, li, .breadcrumbs {
-  font-size: 10pt;
-}
-p, li {
-  line-height: 140%;
-}
-table {
-  border-collapse: collapse;
-  empty-cells: show;
-  margin: 8px 0px 8px 0px;
-}
-th, td {
-  border: 1px solid black;
-  padding: 3px;
-}
-td {
-  background-color: white;
-  vertical-align: top;
-}
-th {
-  background-color: #C3D9FF;
-}
-li {
-  margin-top: 6px;
-  margin-bottom: 6px; 
-}
-
-
-.example {
-  padding: 2px 12px 6px 12px;
-  border: 1px solid #C3D9FF;
-  margin: 6px 0px 28px 0px;
-  background-color: #F5F9FD;
-}
-.example h3 {
-  margin-top: 8px;
-  margin-bottom: 8px;
-  font-size: 12pt;
-}
-
-.special {
-  font-style: italic;
-}
-
-.idea {
-  font-size: 9pt;
-  color: #888;
-  font-style: italic;	
-}
-.tight li {
-  margin-top: 1px;
-  margin-bottom: 1px; 
-}
-.commentary {
-  float: right;
-  width: 200px;
-  background-color: #ffffd0;
-  padding:8px;
-  border: 3px solid #eeeeb0;	 
-  margin: 10px 0px 10px 10px;	 
-}
-.commentary, .commentary * {
-  font-size: 8pt;
-}
-span {
-  font-style: italic;
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/resources/viewer/bdd/stories/AllStories.html
----------------------------------------------------------------------
diff --git a/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/resources/viewer/bdd/stories/AllStories.html b/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/resources/viewer/bdd/stories/AllStories.html
deleted file mode 100644
index 39b3793..0000000
--- a/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/resources/viewer/bdd/stories/AllStories.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-         http://www.apache.org/licenses/LICENSE-2.0
-         
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-<!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="todo/Index.html">ToDo Item Stories</a></p>
-	</li>
-</ul>
-
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/resources/viewer/bdd/stories/todo/Fixtures.html
----------------------------------------------------------------------
diff --git a/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/resources/viewer/bdd/stories/todo/Fixtures.html b/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/resources/viewer/bdd/stories/todo/Fixtures.html
deleted file mode 100644
index 21aed55..0000000
--- a/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/resources/viewer/bdd/stories/todo/Fixtures.html
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-         http://www.apache.org/licenses/LICENSE-2.0
-         
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-<!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/BootstrapInPrototypeMode.html">prototype</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-MM-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-03-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">sven</span></p>
-	</li>
-	<li>
-	<p>with <a concordion:run="concordion"
-		href="../../common/ToDoItems.html">To Do Items</a>.</p>
-	</li>
-</ul>
-
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/resources/viewer/bdd/stories/todo/Index.html
----------------------------------------------------------------------
diff --git a/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/resources/viewer/bdd/stories/todo/Index.html b/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/resources/viewer/bdd/stories/todo/Index.html
deleted file mode 100644
index 0a43ec4..0000000
--- a/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/resources/viewer/bdd/stories/todo/Index.html
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-         http://www.apache.org/licenses/LICENSE-2.0
-         
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-<!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>ToDo Item Stories</h1>
-
-<ul>
-    <li>
-	<p><a concordion:run="concordion"
-		href="ScenarioMarkItemAsDone.html">mark item as done</a></p>
-	</li>
-</ul>
-
-
-
-</body>
-</html>


[05/19] ISIS-463: mothballing BDD viewer

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/concordion/pom.xml
----------------------------------------------------------------------
diff --git a/mothballed/bdd/concordion/pom.xml b/mothballed/bdd/concordion/pom.xml
new file mode 100755
index 0000000..bbdcd9c
--- /dev/null
+++ b/mothballed/bdd/concordion/pom.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+  
+         http://www.apache.org/licenses/LICENSE-2.0
+         
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+	<parent>
+	    <groupId>org.apache.isis.viewer</groupId>
+	    <artifactId>isis-viewer-bdd</artifactId>
+	    <version>1.0.0-SNAPSHOT</version>
+	</parent>
+	
+	<artifactId>isis-viewer-bdd-concordion</artifactId>
+	<name>Isis BDD Viewer (Concordion)</name>
+
+	<properties>
+		<siteBaseDir>..</siteBaseDir>
+		<relativeUrl>concordion/</relativeUrl>
+
+		<concordion.version>1.4.3</concordion.version>
+	</properties>
+	
+    <!-- used in Site generation for relative references. -->
+    <url>http://isis.apache.org/${relativeUrl}</url>
+
+    <dependencyManagement>
+        <dependencies>
+
+            <!-- 3rd party dependencies -->
+			<dependency>
+				<groupId>org.concordion</groupId>
+				<artifactId>concordion</artifactId>
+		        <version>${concordion.version}</version>
+			</dependency>
+         </dependencies>
+    </dependencyManagement>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.apache.isis.viewer</groupId>
+			<artifactId>isis-viewer-bdd-common</artifactId>
+		</dependency>
+	
+        <dependency>
+            <groupId>org.concordion</groupId>
+            <artifactId>concordion</artifactId>
+            <exclusions>
+               <exclusion>
+                   <!--  excluded because of LGPL; end-developer must include in POM file directly -->
+                   <groupId>xom</groupId>
+                   <artifactId>xom</artifactId>
+               </exclusion>
+                <exclusion>
+                    <!-- for dependency convergence -->
+                    <groupId>junit</groupId>
+                    <artifactId>junit-dep</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+		<dependency>
+            <groupId>junit</groupId>
+	        <artifactId>junit</artifactId>
+		</dependency>
+	</dependencies>
+
+</project>

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/AbstractIsisConcordionScenario.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/AbstractIsisConcordionScenario.java b/mothballed/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/AbstractIsisConcordionScenario.java
new file mode 100644
index 0000000..ecf7eb0
--- /dev/null
+++ b/mothballed/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/AbstractIsisConcordionScenario.java
@@ -0,0 +1,539 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.concordion;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Collections;
+import java.util.List;
+
+import com.google.common.base.Function;
+import com.google.common.collect.Iterables;
+
+import org.apache.log4j.BasicConfigurator;
+import org.apache.log4j.Level;
+import org.apache.log4j.LogManager;
+import org.concordion.Concordion;
+import org.concordion.api.ResultSummary;
+import org.concordion.internal.ConcordionBuilder;
+import org.concordion.internal.FileTarget;
+import org.junit.Test;
+
+import org.apache.isis.core.commons.lang.IoUtils;
+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.runtime.system.DeploymentType;
+import org.apache.isis.viewer.bdd.common.Scenario;
+import org.apache.isis.viewer.bdd.common.ScenarioValueException;
+import org.apache.isis.viewer.bdd.common.fixtures.SetUpObjectsPeer.Mode;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.Perform;
+import org.apache.isis.viewer.bdd.concordion.internal.concordion.IsisExecuteCommandWithHeader;
+import org.apache.isis.viewer.bdd.concordion.internal.fixtures.AliasItemsInListForConcordion;
+import org.apache.isis.viewer.bdd.concordion.internal.fixtures.CheckCollectionContentsForConcordion;
+import org.apache.isis.viewer.bdd.concordion.internal.fixtures.CheckListForConcordion;
+import org.apache.isis.viewer.bdd.concordion.internal.fixtures.SetUpObjectsForConcordion;
+import org.apache.isis.viewer.bdd.concordion.internal.fixtures.UsingIsisViewerForConcordion;
+
+public abstract class AbstractIsisConcordionScenario {
+
+    public static final String DEFAULT_CONCORDION_CSS = "concordion.css";
+
+    /**
+     * The system property that is searched for to use as the
+     * {@link #outputDir() target directory}.
+     */
+    public static final String DEFAULT_CONCORDION_OUTPUT_DIR_PROPERTY = "concordion.output.dir";
+
+    /**
+     * The directory used by default if the
+     * {@link #DEFAULT_CONCORDION_OUTPUT_DIR_PROPERTY default property} for the
+     * {@link #outputDir() target directory} is not specified (and the
+     * {@link #outputDir()} method has not been overridden).
+     */
+    public static final String DEFAULT_OUTPUT_DIR = "/tmp/concordion";
+
+    public static final String NS_URI = "http://isis.apache.org/2010/concordion";
+    private static final String CMD_EXECUTE = "execute";
+
+    private static ThreadLocal<Scenario> scenarioThreadLocal = new ThreadLocal<Scenario>() {
+        @Override
+        protected Scenario initialValue() {
+            return new Scenario();
+        }
+    };
+
+    public static Scenario getScenario() {
+        return scenarioThreadLocal.get();
+    }
+
+    // ////////////////////////////////////////////////////////////////////////
+    // @Test
+    // ////////////////////////////////////////////////////////////////////////
+
+    @Test
+    public void runScenario() throws Throwable {
+        BasicConfigurator.configure();
+        LogManager.getRootLogger().setLevel(Level.INFO);
+        try {
+            final Concordion concordion = createConcordion();
+            final ResultSummary resultSummary = concordion.process(this);
+            resultSummary.print(System.out, this);
+            resultSummary.assertIsSatisfied(this);
+        } finally {
+            copyCustomCssIfDefined();
+        }
+    }
+
+    private void copyCustomCssIfDefined() {
+        final Class<?> cssClass = customCssPackage();
+        final String customCss = customCss();
+        if (cssClass == null || customCss == null) {
+            return;
+        }
+        final InputStream cssInputFile = cssClass.getResourceAsStream(customCss);
+        final String cssPackageName = cssClass.getPackage().getName();
+        final String cssPackagePath = asPath(cssPackageName);
+        final String cssOutputFileName = StringUtils.combinePaths(outputDir(), cssPackagePath, customCss);
+        try {
+            final ByteArrayOutputStream baos = new ByteArrayOutputStream();
+            IoUtils.copy(cssInputFile, baos);
+            if (baos.size() > 0) {
+                IoUtils.copy(new ByteArrayInputStream(baos.toByteArray()), new FileOutputStream(cssOutputFileName));
+            }
+        } catch (final IllegalArgumentException e) {
+            System.err.printf("failed to copy custom CSS to '%s'\n", customCss, cssOutputFileName);
+            return;
+        } catch (final IOException e) {
+            System.err.printf("failed to copy custom CSS '%s' to '%s'\n", customCss, cssOutputFileName);
+            return;
+        }
+    }
+
+    private String asPath(final String name) {
+        return name.replace('.', File.separatorChar);
+    }
+
+    // ////////////////////////////////////////////////////////////////////////
+    // Hooks
+    // ////////////////////////////////////////////////////////////////////////
+
+    /**
+     * The directory to which the processed HTML should be copied.
+     * 
+     * <p>
+     * Defaults to the value of the
+     * {@value #DEFAULT_CONCORDION_OUTPUT_DIR_PROPERTY} system property, or
+     * {@value #DEFAULT_OUTPUT_DIR} if that property is not specified.
+     * 
+     * <p>
+     * Can either be overridden if wish to specify some other mechanism for
+     * determining where the output is generated.
+     */
+    protected String outputDir() {
+        final String concordionOutputDir = System.getProperty(DEFAULT_CONCORDION_OUTPUT_DIR_PROPERTY);
+        return StringUtils.isNullOrEmpty(concordionOutputDir) ? DEFAULT_OUTPUT_DIR : concordionOutputDir;
+    }
+
+    /**
+     * Optional hook method to specify the class (any class) that resides in the
+     * same package as the {@link #customCss()}.
+     * 
+     * <p>
+     * Return <tt>null</tt> if no custom CSS has been provided.
+     * 
+     * @see #customCss()
+     */
+    protected Class<?> customCssPackage() {
+        return null;
+    }
+
+    /**
+     * Optional hook method to specify the name of the custom CSS file.
+     * 
+     * <p>
+     * Defaults to {@value #DEFAULT_CONCORDION_CSS} so you do not need to
+     * override if your custom CSS file has this name. However, it is necessary
+     * to override {@link #customCssPackage()} to indicate the package that the
+     * CSS resides in.
+     * 
+     * @see #customCssPackage()
+     */
+    protected String customCss() {
+        return DEFAULT_CONCORDION_CSS;
+    }
+
+    private Concordion createConcordion() {
+        final String targetDir = outputDir();
+        if (targetDir == null) {
+            throw new IllegalStateException("targetDir() cannot be null");
+        }
+        final ConcordionBuilder builder = new ConcordionBuilder() {
+        }.withTarget(new FileTarget(new File(targetDir))).withCommand(NS_URI, CMD_EXECUTE, new IsisExecuteCommandWithHeader());
+        return builder.build();
+    }
+
+    // ////////////////////////////////////////////////////////////////////////
+    // bootstrapIsis / shutdownIsis
+    // ////////////////////////////////////////////////////////////////////////
+
+    /**
+     * For calling within a <tt>#setUp()</tt> method.
+     * 
+     * @see {@link #bootstrapIsis(String, String)}
+     */
+    public void bootstrapIsis(final String configDirectory, final DeploymentType deploymentType) {
+        getScenario().bootstrapIsis(StringUtils.normalized(configDirectory), deploymentType);
+    }
+
+    /**
+     * For calling from XHTML script.
+     * 
+     * @see #bootstrapIsis(String, DeploymentType)
+     * @return <tt>boolean</tt> so that XHTML can assert on it.
+     */
+    public boolean bootstrapIsis(final String configDirectory, final String deploymentTypeStr) {
+        bootstrapIsis(configDirectory, DeploymentType.lookup(StringUtils.normalized(deploymentTypeStr)));
+        return true; // any runtime exception will propagate
+    }
+
+    public void shutdownIsis() {
+        getScenario().shutdownIsis();
+    }
+
+    // ////////////////////////////////////////////////////////////////////////
+    // logon as / switch user
+    // ////////////////////////////////////////////////////////////////////////
+
+    public boolean logonAs(final String userName) {
+        getScenario().logonAsOrSwitchUserTo(StringUtils.normalized(userName));
+        return true;
+    }
+
+    public boolean logonAsWithRoles(final String userName, final String roleListStr) {
+        final List<String> roleList = StringUtils.splitOnCommas(StringUtils.normalized(roleListStr));
+        getScenario().logonAsOrSwitchUserTo(userName, roleList);
+        return true;
+    }
+
+    public void switchUser(final String userName) {
+        logonAs(userName);
+    }
+
+    public void switchUserWithRoles(final String userName, final String roleListStr) {
+        logonAsWithRoles(userName, roleListStr);
+    }
+
+    // ////////////////////////////////////////////////////////////////////////
+    // date is / time is
+    // ////////////////////////////////////////////////////////////////////////
+
+    public boolean usingDateFormat(final String dateFormatStr) {
+        getScenario().usingDateFormat(dateFormatStr);
+        return true;
+    }
+
+    public boolean usingTimeFormat(final String timeFormatStr) {
+        getScenario().usingTimeFormat(timeFormatStr);
+        return true;
+    }
+
+    public boolean dateIs(final String dateAndTimeStr) throws ScenarioValueException {
+        return dateAndTimeIs(dateAndTimeStr);
+    }
+
+    public boolean timeIs(final String dateAndTimeStr) throws ScenarioValueException {
+        return dateAndTimeIs(dateAndTimeStr);
+    }
+
+    private boolean dateAndTimeIs(final String dateAndTimeStr) throws ScenarioValueException {
+        return getScenario().dateAndTimeIs(dateAndTimeStr);
+    }
+
+    // ////////////////////////////////////////////////////////////////////////
+    // alias service
+    // ////////////////////////////////////////////////////////////////////////
+
+    public boolean aliasService(final String aliasAs, final String className) {
+        try {
+            getScenario().getAliasRegistry().aliasService(StringUtils.normalized(aliasAs), StringUtils.normalized(className));
+            return true;
+        } catch (final ScenarioValueException e) {
+            return false;
+        }
+    }
+
+    // ////////////////////////////////////////////////////////////////////////
+    // setup object
+    // ////////////////////////////////////////////////////////////////////////
+
+    public String setUpObject(final String className, final String alias, final String arg0) {
+        return setUpObjectsVarargs(className, alias, arg0);
+    }
+
+    public String setUpObject(final String className, final String alias, final String arg0, final String arg1) {
+        return setUpObjectsVarargs(className, alias, arg0, arg1);
+    }
+
+    public String setUpObject(final String className, final String alias, final String arg0, final String arg1, final String arg2) {
+        return setUpObjectsVarargs(className, alias, arg0, arg1, arg2);
+    }
+
+    public String setUpObject(final String className, final String alias, final String arg0, final String arg1, final String arg2, final String arg3) {
+        return setUpObjectsVarargs(className, alias, arg0, arg1, arg2, arg3);
+    }
+
+    public String setUpObject(final String className, final String alias, final String arg0, final String arg1, final String arg2, final String arg3, final String arg4) {
+        return setUpObjectsVarargs(className, alias, arg0, arg1, arg2, arg3, arg4);
+    }
+
+    public String setUpObject(final String className, final String alias, final String arg0, final String arg1, final String arg2, final String arg3, final String arg4, final String arg5) {
+        return setUpObjectsVarargs(className, alias, arg0, arg1, arg2, arg3, arg4, arg5);
+    }
+
+    public String setUpObject(final String className, final String alias, final String arg0, final String arg1, final String arg2, final String arg3, final String arg4, final String arg5, final String arg6) {
+        return setUpObjectsVarargs(className, alias, arg0, arg1, arg2, arg3, arg4, arg5, arg6);
+    }
+
+    public String setUpObject(final String className, final String alias, final String arg0, final String arg1, final String arg2, final String arg3, final String arg4, final String arg5, final String arg6, final String arg7) {
+        return setUpObjectsVarargs(className, alias, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
+    }
+
+    public String setUpObject(final String className, final String alias, final String arg0, final String arg1, final String arg2, final String arg3, final String arg4, final String arg5, final String arg6, final String arg7, final String arg8) {
+        return setUpObjectsVarargs(className, alias, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
+    }
+
+    public String setUpObject(final String className, final String alias, final String arg0, final String arg1, final String arg2, final String arg3, final String arg4, final String arg5, final String arg6, final String arg7, final String arg8, final String arg9) {
+        return setUpObjectsVarargs(className, alias, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
+    }
+
+    private SetUpObjectsForConcordion setUpObjects;
+
+    /**
+     * Workaround for OGNL defect.
+     */
+    protected String setUpObjectsVarargs(final String className, final String alias, final String... propertyValues) {
+        return setUpObjectsVarargsNormalized(StringUtils.normalized(className), StringUtils.normalized(alias), StringUtils.normalized(propertyValues));
+    }
+
+    private String setUpObjectsVarargsNormalized(final String className, final String alias, final String... propertyValues) {
+        if (executingInline()) {
+            setUpObjects = new SetUpObjectsForConcordion(getScenario().getAliasRegistry(), className, Mode.PERSIST);
+            setUpObjects.executeHeader(alias, propertyValues);
+            return setUpObjects.executeRow(alias, propertyValues);
+        } else {
+            if (executingTableHeader()) {
+                setUpObjects = new SetUpObjectsForConcordion(getScenario().getAliasRegistry(), className, Mode.PERSIST);
+                return setUpObjects.executeHeader(alias, propertyValues);
+            } else {
+                return setUpObjects.executeRow(alias, propertyValues);
+            }
+        }
+    }
+
+    // ////////////////////////////////////////////////////////////////////////
+    // using isis viewer
+    // ////////////////////////////////////////////////////////////////////////
+
+    private UsingIsisViewerForConcordion usingIsisViewer;
+
+    public String usingIsisViewer(final String onObject, final String aliasResultAs, final String perform, final String usingMember) {
+        return usingIsisViewerThatArgsVarargs(onObject, aliasResultAs, perform, usingMember, null, null, null, null);
+    }
+
+    public String usingIsisViewerThat(final String onObject, final String aliasResultAs, final String perform, final String usingMember, final String thatIt) {
+        return usingIsisViewerThatArgsVarargs(onObject, aliasResultAs, perform, usingMember, thatIt, null, null, null);
+    }
+
+    public String usingIsisViewerArgs(final String onObject, final String aliasResultAs, final String perform, final String usingMember, final String arg0) {
+        return usingIsisViewerThatArgsVarargs(onObject, aliasResultAs, perform, usingMember, null, arg0);
+    }
+
+    public String usingIsisViewerArgs(final String onObject, final String aliasResultAs, final String perform, final String usingMember, final String arg0, final String arg1) {
+        return usingIsisViewerThatArgsVarargs(onObject, aliasResultAs, perform, usingMember, null, arg0, arg1);
+    }
+
+    public String usingIsisViewerArgs(final String onObject, final String aliasResultAs, final String perform, final String usingMember, final String arg0, final String arg1, final String arg2) {
+        return usingIsisViewerThatArgsVarargs(onObject, aliasResultAs, perform, usingMember, null, arg0, arg1, arg2);
+    }
+
+    public String usingIsisViewerArgs(final String onObject, final String aliasResultAs, final String perform, final String usingMember, final String arg0, final String arg1, final String arg2, final String arg3) {
+        return usingIsisViewerThatArgsVarargs(onObject, aliasResultAs, perform, usingMember, null, arg0, arg1, arg2, arg3);
+    }
+
+    public String usingIsisViewerArgs(final String onObject, final String aliasResultAs, final String perform, final String usingMember, final String arg0, final String arg1, final String arg2, final String arg3, final String arg4) {
+        return usingIsisViewerThatArgsVarargs(onObject, aliasResultAs, perform, usingMember, null, arg0, arg1, arg2, arg3, arg4);
+    }
+
+    public String usingIsisViewerArgs(final String onObject, final String aliasResultAs, final String perform, final String usingMember, final String arg0, final String arg1, final String arg2, final String arg3, final String arg4, final String arg5) {
+        return usingIsisViewerThatArgsVarargs(onObject, aliasResultAs, perform, usingMember, null, arg0, arg1, arg2, arg3, arg4, arg5);
+    }
+
+    public String usingIsisViewerThatArgs(final String onObject, final String aliasResultAs, final String perform, final String usingMember, final String thatIt, final String arg0) {
+        return usingIsisViewerThatArgsVarargs(onObject, aliasResultAs, perform, usingMember, thatIt, arg0);
+    }
+
+    public String usingIsisViewerThatArgs(final String onObject, final String aliasResultAs, final String perform, final String usingMember, final String thatIt, final String arg0, final String arg1) {
+        return usingIsisViewerThatArgsVarargs(onObject, aliasResultAs, perform, usingMember, thatIt, arg0, arg1);
+    }
+
+    public String usingIsisViewerThatArgs(final String onObject, final String aliasResultAs, final String perform, final String usingMember, final String thatIt, final String arg0, final String arg1, final String arg2) {
+        return usingIsisViewerThatArgsVarargs(onObject, aliasResultAs, perform, usingMember, thatIt, arg0, arg1, arg2);
+    }
+
+    public String usingIsisViewerThatArgs(final String onObject, final String aliasResultAs, final String perform, final String usingMember, final String thatIt, final String arg0, final String arg1, final String arg2, final String arg3) {
+        return usingIsisViewerThatArgsVarargs(onObject, aliasResultAs, perform, usingMember, thatIt, arg0, arg1, arg2, arg3);
+    }
+
+    public String usingIsisViewerThatArgs(final String onObject, final String aliasResultAs, final String perform, final String usingMember, final String thatIt, final String arg0, final String arg1, final String arg2, final String arg3, final String arg4) {
+        return usingIsisViewerThatArgsVarargs(onObject, aliasResultAs, perform, usingMember, thatIt, arg0, arg1, arg2, arg3, arg4);
+    }
+
+    /**
+     * With <tt>protected</tt> visibility so that it can be called by custom
+     * methods if required.
+     */
+    protected String usingIsisViewerThatArgsVarargs(final String onObject, final String aliasResultAs, final String perform, final String usingMember, final String thatIt, final String arg0, final String... remainingArgs) {
+        return usingIsisViewerThatArgsVarargsNormalized(StringUtils.normalized(onObject), StringUtils.normalized(aliasResultAs), StringUtils.normalized(perform), StringUtils.normalized(usingMember), StringUtils.normalized(thatIt), StringUtils.normalized(arg0), StringUtils.normalized(remainingArgs));
+    }
+
+    private String usingIsisViewerThatArgsVarargsNormalized(final String onObject, final String aliasResultAs, final String perform, final String usingMember, final String thatIt, final String arg0, final String... remainingArgs) {
+        if (executingInline()) {
+            usingIsisViewer = new UsingIsisViewerForConcordion(getScenario().getAliasRegistry(), getScenario().getDeploymentType(), getScenario().getDateParser(), Perform.Mode.TEST);
+            usingIsisViewer.executeHeader(onObject, aliasResultAs, perform, usingMember, thatIt, arg0, remainingArgs);
+            return usingIsisViewer.executeRow(onObject, aliasResultAs, perform, usingMember, thatIt, arg0, remainingArgs);
+        } else {
+            if (executingTableHeader()) {
+                usingIsisViewer = new UsingIsisViewerForConcordion(getScenario().getAliasRegistry(), getScenario().getDeploymentType(), getScenario().getDateParser(), Perform.Mode.TEST);
+                return usingIsisViewer.executeHeader(onObject, aliasResultAs, perform, usingMember, thatIt, arg0, remainingArgs);
+            } else {
+                return usingIsisViewer.executeRow(onObject, aliasResultAs, perform, usingMember, thatIt, arg0, remainingArgs);
+            }
+        }
+    }
+
+    // ////////////////////////////////////////////////////////////////////////
+    // check collection
+    // ////////////////////////////////////////////////////////////////////////
+
+    public String checkCollectionIsEmpty(final String listAlias) {
+        return new CheckCollectionContentsForConcordion(getScenario().getAliasRegistry(), StringUtils.normalized(listAlias)).isEmpty();
+    }
+
+    public String checkCollectionIsNotEmpty(final String listAlias) {
+        return new CheckCollectionContentsForConcordion(getScenario().getAliasRegistry(), StringUtils.normalized(listAlias)).isNotEmpty();
+    }
+
+    public String checkCollectionContains(final String listAlias, final String alias) {
+        return new CheckCollectionContentsForConcordion(getScenario().getAliasRegistry(), StringUtils.normalized(listAlias)).contains(StringUtils.normalized(alias));
+    }
+
+    public String checkCollectionDoesNotContain(final String listAlias, final String alias) {
+        return new CheckCollectionContentsForConcordion(getScenario().getAliasRegistry(), StringUtils.normalized(listAlias)).doesNotContain(StringUtils.normalized(alias));
+    }
+
+    public String checkCollectionSize(final String listAlias, final int size) {
+        return new CheckCollectionContentsForConcordion(getScenario().getAliasRegistry(), StringUtils.normalized(listAlias)).assertSize(size);
+    }
+
+    // ////////////////////////////////////////////////////////////////////////
+    // check list
+    // ////////////////////////////////////////////////////////////////////////
+
+    private CheckListForConcordion checkList;
+
+    public String checkList(final String listAlias, final String title) {
+        if (executingTable()) {
+            if (executingTableHeader()) {
+                checkList = new CheckListForConcordion(getScenario().getAliasRegistry(), listAlias);
+                return checkList.executeHeader(title);
+            } else {
+                return checkList.executeRow(title);
+            }
+        } else {
+            checkList = new CheckListForConcordion(getScenario().getAliasRegistry(), listAlias);
+            checkList.executeHeader(title);
+            return checkList.executeRow(title);
+        }
+    }
+
+    // ////////////////////////////////////////////////////////////////////////
+    // getListContents() (for verifyRow)
+    // ////////////////////////////////////////////////////////////////////////
+
+    public Iterable<Object> getListContents(final String listAlias) {
+        final ObjectAdapter listAdapter = getScenario().getAliasRegistry().getAliased(StringUtils.normalized(listAlias));
+        if (listAdapter == null) {
+            return Collections.emptyList();
+        }
+        final CollectionFacet facet = listAdapter.getSpecification().getFacet(CollectionFacet.class);
+        if (facet == null) {
+            return Collections.emptyList();
+        }
+        final Iterable<ObjectAdapter> objectAdapters = facet.iterable(listAdapter);
+        return Iterables.transform(objectAdapters, new Function<ObjectAdapter, Object>() {
+
+            @Override
+            public Object apply(final ObjectAdapter from) {
+                return from.getObject();
+            }
+        });
+    }
+
+    // ////////////////////////////////////////////////////////////////////////
+    // alias items in list
+    // ////////////////////////////////////////////////////////////////////////
+
+    private AliasItemsInListForConcordion aliasItemsInList;
+
+    public String aliasItemsInList(final String listAlias, final String title, final String aliasAs) {
+        return aliasItemsInList(listAlias, title, null, aliasAs);
+    }
+
+    public String aliasItemsInList(final String listAlias, final String title, final String type, final String aliasAs) {
+        aliasItemsInList = new AliasItemsInListForConcordion(getScenario().getAliasRegistry(), StringUtils.normalized(listAlias));
+        return aliasItemsInList.execute(StringUtils.normalized(aliasAs), StringUtils.normalized(title), StringUtils.normalized(type));
+    }
+
+    private boolean executingTableHeader() {
+        return executingTable() && IsisExecuteCommandWithHeader.tableRow.get() == IsisExecuteCommandWithHeader.TableRow.HEADER;
+    }
+
+    private boolean executingTable() {
+        final IsisExecuteCommandWithHeader.Context context = IsisExecuteCommandWithHeader.context.get();
+        return context == IsisExecuteCommandWithHeader.Context.TABLE;
+    }
+
+    private boolean executingInline() {
+        return !executingTable();
+    }
+
+    // ////////////////////////////////////////////////////////////////////////
+    // run viewer
+    // ////////////////////////////////////////////////////////////////////////
+
+    public void runViewer() {
+        getScenario().runViewer();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/concordion/IsisExecuteCommandWithHeader.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/concordion/IsisExecuteCommandWithHeader.java b/mothballed/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/concordion/IsisExecuteCommandWithHeader.java
new file mode 100644
index 0000000..63decb1
--- /dev/null
+++ b/mothballed/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/concordion/IsisExecuteCommandWithHeader.java
@@ -0,0 +1,119 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.concordion.internal.concordion;
+
+import org.concordion.api.CommandCall;
+import org.concordion.api.Evaluator;
+import org.concordion.api.ResultRecorder;
+import org.concordion.internal.Row;
+import org.concordion.internal.TableSupport;
+import org.concordion.internal.command.ExecuteCommand;
+
+/**
+ * Handles tables slightly differently from Concordion's usual strategy.
+ * 
+ * <p>
+ * Specifically, it will call execute for the header row as well as for the body
+ * rows. This is required in order to set up the bindings of the column names to
+ * the positions.
+ */
+public class IsisExecuteCommandWithHeader extends ExecuteCommand {
+
+    public static enum Context {
+        TABLE, INLINE
+    }
+
+    public static enum TableRow {
+        HEADER, BODY
+    }
+
+    /**
+     * Provides a mechanism for the fixture to determine whether the command is
+     * being executed in the context of a table or inline.
+     */
+    public static ThreadLocal<Context> context = new ThreadLocal<Context>() {
+        @Override
+        protected Context initialValue() {
+            return null;
+        }
+    };
+
+    /**
+     * When executing in a {@link Context#TABLE table context}, provides a
+     * mechanism for the fixture to determine whether the header of a table or
+     * the body is being processed.
+     */
+    public static ThreadLocal<TableRow> tableRow = new ThreadLocal<TableRow>() {
+        @Override
+        protected TableRow initialValue() {
+            return TableRow.BODY;
+        }
+    };
+
+    @Override
+    public void execute(final org.concordion.api.CommandCall commandCall, final Evaluator evaluator, final ResultRecorder resultRecorder) {
+        if (commandCall.getElement().isNamed("table")) {
+            // special handling for tables
+            final Context contextIfAny = context.get();
+            final boolean setContext = contextIfAny == null;
+            if (setContext) {
+                context.set(Context.TABLE);
+            }
+            executeTable(commandCall, evaluator, resultRecorder);
+            if (setContext) {
+                context.set(null);
+            }
+        } else {
+            // basically the same as Concordion's original ExecuteCommand
+            final Context contextIfAny = context.get();
+            final boolean setContext = contextIfAny == null;
+            if (setContext) {
+                context.set(Context.INLINE);
+            }
+            super.execute(commandCall, evaluator, resultRecorder);
+            if (setContext) {
+                context.set(null);
+            }
+        }
+    }
+
+    private void executeTable(final CommandCall commandCall, final Evaluator evaluator, final ResultRecorder resultRecorder) {
+        final TableSupport tableSupport = new TableSupport(commandCall);
+
+        // this is the bit that's different: also execute on the header
+        tableRow.set(TableRow.HEADER);
+        final Row headerRow = tableSupport.getLastHeaderRow();
+        commandCall.setElement(headerRow.getElement());
+        commandCall.execute(evaluator, resultRecorder);
+
+        // the rest is copied from Concordion's original implementation
+        tableRow.set(TableRow.BODY);
+        final Row[] detailRows = tableSupport.getDetailRows();
+        for (final Row detailRow : detailRows) {
+            if (detailRow.getCells().length != tableSupport.getColumnCount()) {
+                throw new RuntimeException("The <table> 'execute' command only supports rows with an equal number of columns.");
+            }
+            commandCall.setElement(detailRow.getElement());
+            tableSupport.copyCommandCallsTo(detailRow);
+            commandCall.execute(evaluator, resultRecorder);
+        }
+        tableRow.set(null);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/AbstractFixture.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/AbstractFixture.java b/mothballed/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/AbstractFixture.java
new file mode 100755
index 0000000..ad226b4
--- /dev/null
+++ b/mothballed/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/AbstractFixture.java
@@ -0,0 +1,33 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.concordion.internal.fixtures;
+
+public abstract class AbstractFixture<T> {
+
+    private final T peer;
+
+    protected AbstractFixture(final T fixturePeer) {
+        this.peer = fixturePeer;
+    }
+
+    public T getPeer() {
+        return peer;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/AliasItemsInListForConcordion.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/AliasItemsInListForConcordion.java b/mothballed/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/AliasItemsInListForConcordion.java
new file mode 100644
index 0000000..b535c5f
--- /dev/null
+++ b/mothballed/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/AliasItemsInListForConcordion.java
@@ -0,0 +1,97 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.concordion.internal.fixtures;
+
+import org.apache.isis.viewer.bdd.common.AliasRegistry;
+import org.apache.isis.viewer.bdd.common.CellBinding;
+import org.apache.isis.viewer.bdd.common.CellBindingDefault;
+import org.apache.isis.viewer.bdd.common.IsisViewerConstants;
+import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
+import org.apache.isis.viewer.bdd.common.ScenarioCellDefault;
+import org.apache.isis.viewer.bdd.common.ScenarioValueException;
+import org.apache.isis.viewer.bdd.common.fixtures.AliasItemsInListPeer;
+
+public class AliasItemsInListForConcordion extends AbstractFixture<AliasItemsInListPeer> {
+
+    public AliasItemsInListForConcordion(final AliasRegistry aliasRegistry, final String listAlias) {
+        this(aliasRegistry, listAlias, CellBindingDefault.builder(IsisViewerConstants.TITLE_NAME, IsisViewerConstants.TITLE_HEAD).build(), CellBindingDefault.builder(IsisViewerConstants.TYPE_NAME, IsisViewerConstants.TYPE_HEAD).optional().build(), CellBindingDefault
+                .builder(IsisViewerConstants.ALIAS_RESULT_NAME, IsisViewerConstants.ALIAS_RESULT_HEAD_SET).autoCreate().build());
+    }
+
+    private AliasItemsInListForConcordion(final AliasRegistry aliasRegistry, final String listAlias, final CellBinding titleBinding, final CellBinding typeBinding, final CellBinding aliasBinding) {
+        super(new AliasItemsInListPeer(aliasRegistry, listAlias, titleBinding, typeBinding, aliasBinding));
+    }
+
+    public String execute(final String aliasAs, final String title, final String type) {
+        final String header = executeHeader(aliasAs, title, type);
+        if (header != null) {
+            return header;
+        }
+
+        final String row = executeRow(aliasAs, title, type);
+        if (row != null) {
+            return row;
+        }
+
+        return "ok"; // ok
+    }
+
+    private String executeHeader(final String alias, final String title, final String type) {
+        try {
+            getPeer().assertIsList();
+        } catch (final ScenarioValueException e) {
+            return e.getMessage();
+        }
+
+        // create bindings
+        getPeer().getTitleBinding().setHeadColumn(0);
+        getPeer().getAliasBinding().setHeadColumn(1);
+
+        if (type != null) {
+            getPeer().getTypeBinding().setHeadColumn(2, new ScenarioCellDefault(type));
+        }
+
+        return null;
+    }
+
+    private String executeRow(final String aliasAs, final String title, final String type) {
+        if (!getPeer().isList()) {
+            return null; // skip
+        }
+
+        captureCurrent(aliasAs, title, type);
+
+        try {
+            getPeer().findAndAlias();
+        } catch (final ScenarioBoundValueException e) {
+            return e.getMessage();
+        }
+
+        return null;
+    }
+
+    private void captureCurrent(final String aliasAs, final String title, final String type) {
+        getPeer().getAliasBinding().captureCurrent(new ScenarioCellDefault(aliasAs));
+        getPeer().getTitleBinding().captureCurrent(new ScenarioCellDefault(title));
+        if (type != null) {
+            getPeer().getTitleBinding().captureCurrent(new ScenarioCellDefault(type));
+        }
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/CheckCollectionContentsForConcordion.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/CheckCollectionContentsForConcordion.java b/mothballed/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/CheckCollectionContentsForConcordion.java
new file mode 100644
index 0000000..7cf7507
--- /dev/null
+++ b/mothballed/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/CheckCollectionContentsForConcordion.java
@@ -0,0 +1,61 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.concordion.internal.fixtures;
+
+import org.apache.isis.viewer.bdd.common.AliasRegistry;
+import org.apache.isis.viewer.bdd.common.fixtures.CheckCollectionContentsPeer;
+
+public class CheckCollectionContentsForConcordion extends AbstractFixture<CheckCollectionContentsPeer> {
+
+    public CheckCollectionContentsForConcordion(final AliasRegistry aliasRegistry, final String listAlias) {
+        super(new CheckCollectionContentsPeer(aliasRegistry, listAlias));
+    }
+
+    public String contains(final String alias) {
+        if (!getPeer().isValidAlias(alias)) {
+            return "unknown alias '" + alias + "'";
+        }
+        final boolean contains = getPeer().contains(alias);
+        return contains ? "ok" : "does not contain '" + alias + "'";
+    }
+
+    public String doesNotContain(final String alias) {
+        if (!getPeer().isValidAlias(alias)) {
+            return "unknown alias '" + alias + "'";
+        }
+        final boolean doesNotContain = getPeer().doesNotContain(alias);
+        return doesNotContain ? "ok" : "does contain";
+    }
+
+    public String isEmpty() {
+        final boolean isEmpty = getPeer().isEmpty();
+        return isEmpty ? "ok" : "not empty";
+    }
+
+    public String isNotEmpty() {
+        final boolean isNotEmpty = getPeer().isNotEmpty();
+        return isNotEmpty ? "ok" : "empty";
+    }
+
+    public String assertSize(final int size) {
+        final boolean hasSize = getPeer().assertSize(size);
+        return hasSize ? "ok" : "contains " + getPeer().getSize() + " objects";
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/CheckListForConcordion.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/CheckListForConcordion.java b/mothballed/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/CheckListForConcordion.java
new file mode 100644
index 0000000..ed3574c
--- /dev/null
+++ b/mothballed/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/CheckListForConcordion.java
@@ -0,0 +1,72 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.concordion.internal.fixtures;
+
+import org.apache.isis.viewer.bdd.common.AliasRegistry;
+import org.apache.isis.viewer.bdd.common.CellBindingDefault;
+import org.apache.isis.viewer.bdd.common.ScenarioCell;
+import org.apache.isis.viewer.bdd.common.ScenarioCellDefault;
+import org.apache.isis.viewer.bdd.common.fixtures.CheckListConstants;
+import org.apache.isis.viewer.bdd.common.fixtures.CheckListPeer;
+import org.apache.isis.viewer.bdd.common.fixtures.CheckListPeer.CheckMode;
+
+public class CheckListForConcordion extends AbstractFixture<CheckListPeer> {
+
+    public CheckListForConcordion(final AliasRegistry aliasRegistry, final String listAlias) {
+        super(new CheckListPeer(aliasRegistry, listAlias, CheckMode.NOT_EXACT, titleBinding()));
+    }
+
+    private static CellBindingDefault titleBinding() {
+        return CellBindingDefault.builder(CheckListConstants.TITLE_NAME, CheckListConstants.TITLE_HEAD_SET).ditto().build();
+    }
+
+    public String executeHeader(final String title) {
+        return setupHeader(title);
+    }
+
+    private String setupHeader(final String title) {
+        int colNum = 0;
+        getPeer().getTitleBinding().setHeadColumn(colNum++);
+        return ""; // ok
+    }
+
+    public String executeRow(final String title) {
+
+        setupHeader(title);
+
+        // capture current
+        getPeer().getTitleBinding().captureCurrent(new ScenarioCellDefault(title));
+
+        // execute
+        return checkExists();
+    }
+
+    private String checkExists() {
+        if (!getPeer().findAndAddObject()) {
+            return getTitle() + " not found";
+        }
+        return "ok";
+    }
+
+    private String getTitle() {
+        final ScenarioCell currentCell = getPeer().getTitleBinding().getCurrentCell();
+        return currentCell != null ? currentCell.getText() : "(no title provided)";
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/SetUpObjectsForConcordion.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/SetUpObjectsForConcordion.java b/mothballed/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/SetUpObjectsForConcordion.java
new file mode 100755
index 0000000..5861cdb
--- /dev/null
+++ b/mothballed/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/SetUpObjectsForConcordion.java
@@ -0,0 +1,72 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.concordion.internal.fixtures;
+
+import org.apache.isis.viewer.bdd.common.AliasRegistry;
+import org.apache.isis.viewer.bdd.common.CellBinding;
+import org.apache.isis.viewer.bdd.common.CellBindingDefault;
+import org.apache.isis.viewer.bdd.common.IsisViewerConstants;
+import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
+import org.apache.isis.viewer.bdd.common.fixtures.SetUpObjectsPeer;
+
+public class SetUpObjectsForConcordion extends AbstractFixture<SetUpObjectsPeer> {
+
+    public SetUpObjectsForConcordion(final AliasRegistry aliasesRegistry, final String className, final SetUpObjectsPeer.Mode mode) {
+        this(aliasesRegistry, className, mode, CellBindingDefault.builder(IsisViewerConstants.ALIAS_RESULT_NAME, IsisViewerConstants.ALIAS_RESULT_HEAD_SET).autoCreate().build());
+    }
+
+    private SetUpObjectsForConcordion(final AliasRegistry storyFixture, final String className, final SetUpObjectsPeer.Mode mode, final CellBinding aliasBinding) {
+        super(new SetUpObjectsPeer(storyFixture, className, mode, aliasBinding));
+    }
+
+    public String executeHeader(final String alias, final String... propertyNames) {
+
+        // create bindings (there's only one)
+        getPeer().getAliasBinding().setHeadColumn(0);
+
+        // define properties and the alias column
+        int colNum = 0;
+        getPeer().definePropertyOrAlias(alias, colNum++);
+
+        for (final String propertyName : propertyNames) {
+            getPeer().definePropertyOrAlias(propertyName, colNum++);
+        }
+
+        return ""; // ok
+    }
+
+    public String executeRow(final String alias, final String... propertyValues) {
+
+        // set property values and the alis
+        getPeer().addPropertyValueOrAlias(alias);
+        for (final String propertyValue : propertyValues) {
+            getPeer().addPropertyValueOrAlias(propertyValue);
+        }
+
+        // create the object
+        try {
+            getPeer().createObject();
+            return "ok";
+        } catch (final ScenarioBoundValueException ex) {
+            return ex.toString();
+        }
+
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/UsingIsisViewerForConcordion.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/UsingIsisViewerForConcordion.java b/mothballed/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/UsingIsisViewerForConcordion.java
new file mode 100644
index 0000000..11b916a
--- /dev/null
+++ b/mothballed/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/UsingIsisViewerForConcordion.java
@@ -0,0 +1,127 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.concordion.internal.fixtures;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.google.common.collect.Lists;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
+import org.apache.isis.core.runtime.system.DeploymentType;
+import org.apache.isis.viewer.bdd.common.AliasRegistry;
+import org.apache.isis.viewer.bdd.common.CellBinding;
+import org.apache.isis.viewer.bdd.common.CellBindingDefault;
+import org.apache.isis.viewer.bdd.common.IsisViewerConstants;
+import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
+import org.apache.isis.viewer.bdd.common.ScenarioCell;
+import org.apache.isis.viewer.bdd.common.ScenarioCellDefault;
+import org.apache.isis.viewer.bdd.common.fixtures.UsingIsisViewerPeer;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.Perform;
+import org.apache.isis.viewer.bdd.common.parsers.DateParser;
+
+public class UsingIsisViewerForConcordion extends AbstractFixture<UsingIsisViewerPeer> {
+
+    public UsingIsisViewerForConcordion(final AliasRegistry aliasesRegistry, final DeploymentType deploymentType, final DateParser dateParser, final Perform.Mode mode) {
+        this(aliasesRegistry, deploymentType, dateParser, mode, CellBindingDefault.builder(IsisViewerConstants.ON_OBJECT_NAME, IsisViewerConstants.ON_OBJECT_HEAD_SET).ditto().build(), CellBindingDefault.builder(IsisViewerConstants.ALIAS_RESULT_NAME, IsisViewerConstants.ALIAS_RESULT_HEAD_SET)
+                .optional().build(), CellBindingDefault.builder(IsisViewerConstants.PERFORM_NAME, IsisViewerConstants.PERFORM_HEAD_SET).ditto().build(), CellBindingDefault.builder(IsisViewerConstants.ON_MEMBER_NAME, IsisViewerConstants.ON_MEMBER_HEAD_SET).optional().build(), CellBindingDefault
+                .builder(IsisViewerConstants.THAT_IT_NAME, IsisViewerConstants.THAT_IT_HEAD_SET).ditto().optional().build(), CellBindingDefault.builder(IsisViewerConstants.WITH_ARGUMENTS_NAME, IsisViewerConstants.WITH_ARGUMENTS_HEAD_SET).optional().build());
+    }
+
+    private UsingIsisViewerForConcordion(final AliasRegistry aliasesRegistry, final DeploymentType deploymentType, final DateParser dateParser, final Perform.Mode mode, final CellBinding onObjectBinding, final CellBinding aliasResultAsBinding, final CellBinding performBinding,
+            final CellBinding onMemberBinding, final CellBinding thatItBinding, final CellBinding arg0Binding) {
+        super(new UsingIsisViewerPeer(aliasesRegistry, deploymentType, dateParser, mode, onObjectBinding, aliasResultAsBinding, performBinding, onMemberBinding, thatItBinding, arg0Binding));
+    }
+
+    public String executeHeader(final String onObject, final String aliasResultAs, final String perform, final String usingMember, final String thatIt, final String arg0, final String... remainingArgs) {
+
+        return setupHeader(onObject, aliasResultAs, perform, usingMember, thatIt, arg0);
+    }
+
+    private String setupHeader(final String onObject, final String aliasResultAs, final String perform, final String usingMember, final String thatIt, final String arg0) {
+        int colNum = 0;
+        getPeer().getOnObjectBinding().setHeadColumn(colNum++);
+        getPeer().getAliasResultAsBinding().setHeadColumn(colNum++);
+        getPeer().getPerformBinding().setHeadColumn(colNum++);
+        getPeer().getOnMemberBinding().setHeadColumn(colNum++);
+        if (thatIt != null) {
+            getPeer().getThatItBinding().setHeadColumn(colNum++);
+        }
+        if (arg0 != null) {
+            getPeer().getArg0Binding().setHeadColumn(colNum++);
+        }
+
+        return ""; // ok
+    }
+
+    public String executeRow(final String onObject, final String aliasResultAs, final String perform, final String usingMember, final String thatIt, final String arg0, final String... remainingArgs) {
+
+        setupHeader(onObject, aliasResultAs, perform, usingMember, thatIt, arg0);
+
+        final List<String> argumentCells = new ArrayList<String>();
+
+        // capture current
+        getPeer().getOnObjectBinding().captureCurrent(new ScenarioCellDefault(onObject));
+        getPeer().getAliasResultAsBinding().captureCurrent(new ScenarioCellDefault(aliasResultAs));
+        getPeer().getPerformBinding().captureCurrent(new ScenarioCellDefault(perform));
+        getPeer().getOnMemberBinding().captureCurrent(new ScenarioCellDefault(usingMember));
+        if (getPeer().getThatItBinding().isFound()) {
+            getPeer().getThatItBinding().captureCurrent(new ScenarioCellDefault(thatIt));
+        }
+        if (getPeer().getArg0Binding().isFound()) {
+            getPeer().getArg0Binding().captureCurrent(new ScenarioCellDefault(arg0));
+            argumentCells.add(arg0);
+        }
+        for (final String arg : remainingArgs) {
+            argumentCells.add(arg);
+        }
+
+        // execute
+        try {
+            execute(argumentCells);
+        } catch (final ScenarioBoundValueException ex) {
+            return ex.getMessage();
+        }
+
+        return "ok";
+    }
+
+    private void execute(final List<String> argumentCells) throws ScenarioBoundValueException {
+
+        final ObjectAdapter onAdapter = getPeer().validateOnObject();
+        final String aliasAs = getPeer().validateAliasAs();
+        final Perform performCommand = getPeer().validatePerform();
+
+        ObjectMember objectMember = null;
+        if (performCommand.requiresMember()) {
+            objectMember = getPeer().validateOnMember(onAdapter);
+        }
+
+        getPeer().performCommand(onAdapter, aliasAs, objectMember, performCommand, asValues(argumentCells));
+    }
+
+    private static List<ScenarioCell> asValues(final List<String> argumentCells) {
+        final List<ScenarioCell> storyValues = Lists.newArrayList();
+        for (final String arg : argumentCells) {
+            storyValues.add(new ScenarioCellDefault(arg));
+        }
+        return storyValues;
+    }
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/concordion/src/site/apt/index.apt
----------------------------------------------------------------------
diff --git a/mothballed/bdd/concordion/src/site/apt/index.apt b/mothballed/bdd/concordion/src/site/apt/index.apt
new file mode 100644
index 0000000..ebc04d1
--- /dev/null
+++ b/mothballed/bdd/concordion/src/site/apt/index.apt
@@ -0,0 +1,29 @@
+~~  Licensed to the Apache Software Foundation (ASF) under one
+~~  or more contributor license agreements.  See the NOTICE file
+~~  distributed with this work for additional information
+~~  regarding copyright ownership.  The ASF licenses this file
+~~  to you under the Apache License, Version 2.0 (the
+~~  "License"); you may not use this file except in compliance
+~~  with the License.  You may obtain a copy of the License at
+~~
+~~        http://www.apache.org/licenses/LICENSE-2.0
+~~
+~~  Unless required by applicable law or agreed to in writing,
+~~  software distributed under the License is distributed on an
+~~  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+~~  KIND, either express or implied.  See the License for the
+~~  specific language governing permissions and limitations
+~~  under the License.
+
+
+
+BDD Concordion support
+
+ The <concordion> module provides an integration between the Isis (via {{{../bdd-common/index.html}common}}
+ and the {{{http://concordion.org}Concordion}} framework itself.
+ 
+Further Info
+  
+  See this module's {{{./apidocs/index.html}Javadoc}} and the 
+  {{{../docbkx/html/guide/isis-bdd-integration.html}user guide}} for more information.
+ 

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/concordion/src/site/apt/jottings.apt
----------------------------------------------------------------------
diff --git a/mothballed/bdd/concordion/src/site/apt/jottings.apt b/mothballed/bdd/concordion/src/site/apt/jottings.apt
new file mode 100644
index 0000000..c5d1200
--- /dev/null
+++ b/mothballed/bdd/concordion/src/site/apt/jottings.apt
@@ -0,0 +1,24 @@
+~~  Licensed to the Apache Software Foundation (ASF) under one
+~~  or more contributor license agreements.  See the NOTICE file
+~~  distributed with this work for additional information
+~~  regarding copyright ownership.  The ASF licenses this file
+~~  to you under the Apache License, Version 2.0 (the
+~~  "License"); you may not use this file except in compliance
+~~  with the License.  You may obtain a copy of the License at
+~~
+~~        http://www.apache.org/licenses/LICENSE-2.0
+~~
+~~  Unless required by applicable law or agreed to in writing,
+~~  software distributed under the License is distributed on an
+~~  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+~~  KIND, either express or implied.  See the License for the
+~~  specific language governing permissions and limitations
+~~  under the License.
+
+
+
+Jottings
+ 
+  This page is to capture any random jottings relating to this module prior 
+  to being moved into formal documentation. 
+ 

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/concordion/src/site/site.xml
----------------------------------------------------------------------
diff --git a/mothballed/bdd/concordion/src/site/site.xml b/mothballed/bdd/concordion/src/site/site.xml
new file mode 100644
index 0000000..5a26b07
--- /dev/null
+++ b/mothballed/bdd/concordion/src/site/site.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+  
+         http://www.apache.org/licenses/LICENSE-2.0
+         
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<project>
+
+	<body>
+		<breadcrumbs>
+			<item name="Concordion" href="index.html"/>
+		</breadcrumbs>
+
+		<menu name="BDD Concordion">
+			<item name="About" href="index.html" />
+            <item name="Jottings" href="jottings.html" />
+		</menu>
+
+        <menu name="BDD Modules">
+            <item name="Common" href="../bdd-common/index.html" />
+            <item name="Concordion" href="../bdd-concordion/index.html" />
+        </menu>
+
+		<menu name="Maven Reports" ref="reports" />
+	</body>
+
+</project>

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/pom.xml
----------------------------------------------------------------------
diff --git a/mothballed/bdd/pom.xml b/mothballed/bdd/pom.xml
new file mode 100644
index 0000000..d8b31fb
--- /dev/null
+++ b/mothballed/bdd/pom.xml
@@ -0,0 +1,200 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+  
+         http://www.apache.org/licenses/LICENSE-2.0
+         
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+	<parent>
+		<groupId>org.apache.isis.core</groupId>
+		<artifactId>isis</artifactId>
+        <version>1.3.0-SNAPSHOT</version>
+		<relativePath>../../../core/pom.xml</relativePath>
+	</parent>
+
+    <groupId>org.apache.isis.viewer</groupId>
+    <artifactId>isis-viewer-bdd</artifactId>
+    <version>1.0.0-SNAPSHOT</version>
+    
+    <name>Isis BDD Viewer</name>
+
+    <packaging>pom</packaging>
+
+    <properties>
+        <siteBaseDir>.</siteBaseDir>
+        <relativeUrl/>
+
+        <docbkxGuideTitle>Apache Isis BDD Testing Guide</docbkxGuideTitle>
+        <docbkxGuideSubTitle>Acceptance Testing using BDD Frameworks</docbkxGuideSubTitle>
+        <docbkxGuideName>isis-bdd-integration</docbkxGuideName>
+        
+        <isis-security-file.version>1.0.2-SNAPSHOT</isis-security-file.version>
+    </properties>
+
+    <!-- used in Site generation for relative references. -->
+    <url>http://isis.apache.org/${relativeUrl}</url>
+
+    <build>
+		<pluginManagement>
+			<plugins>
+                <!-- Apache Release Audit Tool -->
+                <plugin>
+                    <groupId>org.apache.rat</groupId>
+                    <artifactId>apache-rat-plugin</artifactId>
+                    <version>0.8</version>
+	                <configuration>
+	                    <excludes>
+	                    	<!-- 
+	                    	overriding inherited excludes from oia.core:isis 
+	                    	with a more specific set for this component
+	                    	 -->
+	                        <exclude>**/target/**</exclude>
+	                        <exclude>**/target-ide/**</exclude>
+
+	                        <exclude>**/*.project</exclude>
+	                        <exclude>**/.classpath</exclude>
+	                        <exclude>**/.settings/**</exclude>
+	                    </excludes>
+                    </configuration>
+	            </plugin>
+			</plugins>
+		</pluginManagement>
+        <plugins>
+            <plugin>
+                <groupId>com.agilejava.docbkx</groupId>
+                <artifactId>docbkx-maven-plugin</artifactId>
+                <inherited>false</inherited>
+            </plugin>
+
+
+            <plugin>
+                <artifactId>maven-remote-resources-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>process-remote-resources</id>
+                        <goals>
+                            <goal>process</goal>
+                        </goals>
+                        <configuration>
+                            <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>
+                            <appendedResourcesDirectory>${basedir}/${siteBaseDir}/src/main/appended-resources</appendedResourcesDirectory>
+                            <supplementalModels>
+                                <supplementalModel>supplemental-models.xml</supplementalModel>
+                            </supplementalModels>
+                            <resourceBundles>
+                                <resourceBundle>org.apache:apache-jar-resource-bundle:1.4</resourceBundle>
+                            </resourceBundles>
+                            <properties>
+                                <projectTimespan>2010~2013</projectTimespan>
+                                <postDepListText>
+The above (auto-generated) list aggregates the dependencies (either directly
+or transitively) of all the modules that make up Apache Isis. You can use 
+mvn dependency:list or mvn dependency:tree to view dependencies by submodule.
+
+In addition, Isis includes a copy of JQuery core.  This is licensed under
+the MIT license [1].
+
+Note also that the BDD Viewer module [org.apache.isis.viewer:isis-viewer-bdd-concordion]
+has an optional dependency on Concordion [2], which in turn depends upon
+XOM [3]. XOM is licensed under LGPL, which is a non-eligible 'category-X'
+license [4]. This transitive dependency to XOM has therefore been excluded.
+
+To use Isis' BDD Viewer, end-users must explicitly add in the XOM dependency
+in their own POMs.  The application generated by the Isis quickstart
+archetype includes this explicit dependency.
+
+[1] http://jquery.org/license/
+[2] http://concordion.org
+[3] http://www.xom.nu/
+[4] http://www.apache.org/legal/resolved.html#category-x
+                        </postDepListText>
+                            </properties>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+
+
+        </plugins>
+    </build>
+
+    <dependencyManagement>
+    	<dependencies>
+
+	    	<!-- for benefit of application developers, using scope=import -->
+
+            <!-- BDD Viewer -->
+            <dependency>
+			    <groupId>org.apache.isis.viewer</groupId>
+                <artifactId>isis-viewer-bdd-common</artifactId>
+                <version>1.0.0-SNAPSHOT</version>
+            </dependency>
+            <dependency>
+			    <groupId>org.apache.isis.viewer</groupId>
+                <artifactId>isis-viewer-bdd-common</artifactId>
+                <version>1.0.0-SNAPSHOT</version>
+                <scope>test</scope>
+                <type>test-jar</type>
+            </dependency>
+
+            <dependency>
+			    <groupId>org.apache.isis.viewer</groupId>
+                <artifactId>isis-viewer-bdd-concordion</artifactId>
+                <version>1.0.0-SNAPSHOT</version>
+            </dependency>
+            <dependency>
+			    <groupId>org.apache.isis.viewer</groupId>
+                <artifactId>isis-viewer-bdd-concordion</artifactId>
+                <version>1.0.0-SNAPSHOT</version>
+                <scope>test</scope>
+                <type>test-jar</type>
+            </dependency>
+
+
+            <dependency>
+                <groupId>org.apache.isis.security</groupId>
+                <artifactId>isis-security-file</artifactId>
+                <version>${isis-security-file.version}</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+
+    <modules>
+	    <module>common</module>
+	    <module>concordion</module>
+	    <module>tck</module>
+	</modules>
+    
+    <profiles>
+        <profile>
+            <id>bdd-all</id>
+            <activation>
+                <property>
+                    <name>bdd</name>
+                    <value>all</value>
+                </property>
+            </activation>
+            <modules>
+                <module>common</module>
+                <module>concordion</module>
+            </modules>
+        </profile>
+    </profiles>
+
+</project>

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/src/docbkx/guide/images/xmlmind-concordion-attributes-1.png
----------------------------------------------------------------------
diff --git a/mothballed/bdd/src/docbkx/guide/images/xmlmind-concordion-attributes-1.png b/mothballed/bdd/src/docbkx/guide/images/xmlmind-concordion-attributes-1.png
new file mode 100644
index 0000000..1ffad3b
Binary files /dev/null and b/mothballed/bdd/src/docbkx/guide/images/xmlmind-concordion-attributes-1.png differ

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/src/docbkx/guide/images/xmlmind-concordion-attributes-2.png
----------------------------------------------------------------------
diff --git a/mothballed/bdd/src/docbkx/guide/images/xmlmind-concordion-attributes-2.png b/mothballed/bdd/src/docbkx/guide/images/xmlmind-concordion-attributes-2.png
new file mode 100644
index 0000000..02d8282
Binary files /dev/null and b/mothballed/bdd/src/docbkx/guide/images/xmlmind-concordion-attributes-2.png differ

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/src/docbkx/guide/images/xmlmind-css.png
----------------------------------------------------------------------
diff --git a/mothballed/bdd/src/docbkx/guide/images/xmlmind-css.png b/mothballed/bdd/src/docbkx/guide/images/xmlmind-css.png
new file mode 100644
index 0000000..3a982ad
Binary files /dev/null and b/mothballed/bdd/src/docbkx/guide/images/xmlmind-css.png differ

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/src/docbkx/guide/images/xmlmind-delete.png
----------------------------------------------------------------------
diff --git a/mothballed/bdd/src/docbkx/guide/images/xmlmind-delete.png b/mothballed/bdd/src/docbkx/guide/images/xmlmind-delete.png
new file mode 100644
index 0000000..e67091a
Binary files /dev/null and b/mothballed/bdd/src/docbkx/guide/images/xmlmind-delete.png differ

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/src/docbkx/guide/images/xmlmind-editinsert.png
----------------------------------------------------------------------
diff --git a/mothballed/bdd/src/docbkx/guide/images/xmlmind-editinsert.png b/mothballed/bdd/src/docbkx/guide/images/xmlmind-editinsert.png
new file mode 100644
index 0000000..e5b9e50
Binary files /dev/null and b/mothballed/bdd/src/docbkx/guide/images/xmlmind-editinsert.png differ

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/src/docbkx/guide/images/xmlmind-editwrap-result.png
----------------------------------------------------------------------
diff --git a/mothballed/bdd/src/docbkx/guide/images/xmlmind-editwrap-result.png b/mothballed/bdd/src/docbkx/guide/images/xmlmind-editwrap-result.png
new file mode 100644
index 0000000..dab7e9c
Binary files /dev/null and b/mothballed/bdd/src/docbkx/guide/images/xmlmind-editwrap-result.png differ

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/src/docbkx/guide/images/xmlmind-editwrap.png
----------------------------------------------------------------------
diff --git a/mothballed/bdd/src/docbkx/guide/images/xmlmind-editwrap.png b/mothballed/bdd/src/docbkx/guide/images/xmlmind-editwrap.png
new file mode 100644
index 0000000..0d430db
Binary files /dev/null and b/mothballed/bdd/src/docbkx/guide/images/xmlmind-editwrap.png differ

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/src/docbkx/guide/images/xmlmind-emptytable.png
----------------------------------------------------------------------
diff --git a/mothballed/bdd/src/docbkx/guide/images/xmlmind-emptytable.png b/mothballed/bdd/src/docbkx/guide/images/xmlmind-emptytable.png
new file mode 100644
index 0000000..c58d33d
Binary files /dev/null and b/mothballed/bdd/src/docbkx/guide/images/xmlmind-emptytable.png differ

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/src/docbkx/guide/images/xmlmind-headrow.png
----------------------------------------------------------------------
diff --git a/mothballed/bdd/src/docbkx/guide/images/xmlmind-headrow.png b/mothballed/bdd/src/docbkx/guide/images/xmlmind-headrow.png
new file mode 100644
index 0000000..6c1a32d
Binary files /dev/null and b/mothballed/bdd/src/docbkx/guide/images/xmlmind-headrow.png differ

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/src/docbkx/guide/images/xmlmind-image-1.png
----------------------------------------------------------------------
diff --git a/mothballed/bdd/src/docbkx/guide/images/xmlmind-image-1.png b/mothballed/bdd/src/docbkx/guide/images/xmlmind-image-1.png
new file mode 100644
index 0000000..dc7244d
Binary files /dev/null and b/mothballed/bdd/src/docbkx/guide/images/xmlmind-image-1.png differ

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/src/docbkx/guide/images/xmlmind-image-2.png
----------------------------------------------------------------------
diff --git a/mothballed/bdd/src/docbkx/guide/images/xmlmind-image-2.png b/mothballed/bdd/src/docbkx/guide/images/xmlmind-image-2.png
new file mode 100644
index 0000000..b0567fd
Binary files /dev/null and b/mothballed/bdd/src/docbkx/guide/images/xmlmind-image-2.png differ

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/src/docbkx/guide/images/xmlmind-insert-heading.png
----------------------------------------------------------------------
diff --git a/mothballed/bdd/src/docbkx/guide/images/xmlmind-insert-heading.png b/mothballed/bdd/src/docbkx/guide/images/xmlmind-insert-heading.png
new file mode 100644
index 0000000..d2ebe36
Binary files /dev/null and b/mothballed/bdd/src/docbkx/guide/images/xmlmind-insert-heading.png differ

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/src/docbkx/guide/images/xmlmind-insert.png
----------------------------------------------------------------------
diff --git a/mothballed/bdd/src/docbkx/guide/images/xmlmind-insert.png b/mothballed/bdd/src/docbkx/guide/images/xmlmind-insert.png
new file mode 100644
index 0000000..a72fbd1
Binary files /dev/null and b/mothballed/bdd/src/docbkx/guide/images/xmlmind-insert.png differ

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/src/docbkx/guide/images/xmlmind-knowingwhereyouare.png
----------------------------------------------------------------------
diff --git a/mothballed/bdd/src/docbkx/guide/images/xmlmind-knowingwhereyouare.png b/mothballed/bdd/src/docbkx/guide/images/xmlmind-knowingwhereyouare.png
new file mode 100644
index 0000000..17a29d2
Binary files /dev/null and b/mothballed/bdd/src/docbkx/guide/images/xmlmind-knowingwhereyouare.png differ

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/src/docbkx/guide/images/xmlmind-newparas.png
----------------------------------------------------------------------
diff --git a/mothballed/bdd/src/docbkx/guide/images/xmlmind-newparas.png b/mothballed/bdd/src/docbkx/guide/images/xmlmind-newparas.png
new file mode 100644
index 0000000..efdde5f
Binary files /dev/null and b/mothballed/bdd/src/docbkx/guide/images/xmlmind-newparas.png differ

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/src/docbkx/guide/images/xmlmind-opendoc.png
----------------------------------------------------------------------
diff --git a/mothballed/bdd/src/docbkx/guide/images/xmlmind-opendoc.png b/mothballed/bdd/src/docbkx/guide/images/xmlmind-opendoc.png
new file mode 100644
index 0000000..70fd12d
Binary files /dev/null and b/mothballed/bdd/src/docbkx/guide/images/xmlmind-opendoc.png differ

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/src/docbkx/guide/images/xmlmind-selectingcontent-1.png
----------------------------------------------------------------------
diff --git a/mothballed/bdd/src/docbkx/guide/images/xmlmind-selectingcontent-1.png b/mothballed/bdd/src/docbkx/guide/images/xmlmind-selectingcontent-1.png
new file mode 100644
index 0000000..4a1f748
Binary files /dev/null and b/mothballed/bdd/src/docbkx/guide/images/xmlmind-selectingcontent-1.png differ

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/src/docbkx/guide/images/xmlmind-selectingcontent-2.png
----------------------------------------------------------------------
diff --git a/mothballed/bdd/src/docbkx/guide/images/xmlmind-selectingcontent-2.png b/mothballed/bdd/src/docbkx/guide/images/xmlmind-selectingcontent-2.png
new file mode 100644
index 0000000..71df170
Binary files /dev/null and b/mothballed/bdd/src/docbkx/guide/images/xmlmind-selectingcontent-2.png differ

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/src/docbkx/guide/images/xmlmind-viewleft.png
----------------------------------------------------------------------
diff --git a/mothballed/bdd/src/docbkx/guide/images/xmlmind-viewleft.png b/mothballed/bdd/src/docbkx/guide/images/xmlmind-viewleft.png
new file mode 100644
index 0000000..2c42edb
Binary files /dev/null and b/mothballed/bdd/src/docbkx/guide/images/xmlmind-viewleft.png differ

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/src/docbkx/guide/images/xmlmind-viewraw.png
----------------------------------------------------------------------
diff --git a/mothballed/bdd/src/docbkx/guide/images/xmlmind-viewraw.png b/mothballed/bdd/src/docbkx/guide/images/xmlmind-viewraw.png
new file mode 100644
index 0000000..980e793
Binary files /dev/null and b/mothballed/bdd/src/docbkx/guide/images/xmlmind-viewraw.png differ

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/src/docbkx/guide/images/xmlmind-xhtmlmenu.png
----------------------------------------------------------------------
diff --git a/mothballed/bdd/src/docbkx/guide/images/xmlmind-xhtmlmenu.png b/mothballed/bdd/src/docbkx/guide/images/xmlmind-xhtmlmenu.png
new file mode 100644
index 0000000..7763e35
Binary files /dev/null and b/mothballed/bdd/src/docbkx/guide/images/xmlmind-xhtmlmenu.png differ


[18/19] ISIS-463: mothballing BDD viewer

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AbstractListFixturePeer.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AbstractListFixturePeer.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AbstractListFixturePeer.java
deleted file mode 100644
index 3201927..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AbstractListFixturePeer.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import com.google.common.collect.Iterables;
-
-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.ScenarioValueException;
-
-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 ScenarioValueException {
-        if (!(getListAdapter() != null)) {
-            throw new ScenarioValueException("no such alias");
-        }
-        if (!isList()) {
-            throw new ScenarioValueException("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;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AbstractSetUpFixturePeer.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AbstractSetUpFixturePeer.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AbstractSetUpFixturePeer.java
deleted file mode 100644
index e329f1d..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AbstractSetUpFixturePeer.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures;
-
-import org.apache.isis.viewer.bdd.common.AliasRegistry;
-import org.apache.isis.viewer.bdd.common.CellBinding;
-
-public class AbstractSetUpFixturePeer extends AbstractFixturePeer {
-
-    public AbstractSetUpFixturePeer(final AliasRegistry aliasRegistry, final CellBinding... cellBindings) {
-        super(aliasRegistry, cellBindings);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AliasItemsInListPeer.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AliasItemsInListPeer.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AliasItemsInListPeer.java
deleted file mode 100644
index a0b8e21..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AliasItemsInListPeer.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-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.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.ScenarioBoundValueException;
-import org.apache.isis.viewer.bdd.common.ScenarioCell;
-
-public class AliasItemsInListPeer extends AbstractListFixturePeer {
-
-    private final CellBinding titleBinding;
-    private final CellBinding typeBinding;
-    private final CellBinding aliasBinding;
-
-    public AliasItemsInListPeer(final AliasRegistry aliasesRegistry, final String listAlias, final CellBinding titleBinding, final CellBinding typeBinding, final CellBinding aliasBinding) {
-        super(aliasesRegistry, listAlias, titleBinding, typeBinding, aliasBinding);
-
-        this.titleBinding = titleBinding;
-        this.typeBinding = typeBinding;
-        this.aliasBinding = aliasBinding;
-    }
-
-    public CellBinding getTitleBinding() {
-        return titleBinding;
-    }
-
-    public CellBinding getTypeBinding() {
-        return typeBinding;
-    }
-
-    public CellBinding getAliasBinding() {
-        return aliasBinding;
-    }
-
-    public ScenarioCell findAndAlias() throws ScenarioBoundValueException {
-        final ObjectAdapter foundAdapter = findAdapter();
-        if (foundAdapter == null) {
-            throw ScenarioBoundValueException.current(titleBinding, "not found");
-        }
-
-        final ScenarioCell currentCell = aliasBinding.getCurrentCell();
-        final String currentCellText = currentCell.getText();
-        getAliasRegistry().aliasAs(currentCellText, foundAdapter);
-        return currentCell;
-    }
-
-    private ObjectAdapter findAdapter() {
-        for (final ObjectAdapter adapter : collectionAdapters()) {
-
-            if (!titleMatches(adapter)) {
-                continue; // keep looking
-            }
-            if (!typeMatches(adapter)) {
-                continue; // keep looking
-            }
-
-            return adapter;
-        }
-        return null;
-    }
-
-    private boolean titleMatches(final ObjectAdapter adapter) {
-        final String adapterTitle = adapter.titleString();
-        final String requiredTitle = titleBinding.getCurrentCell().getText();
-        return StringUtils.nullSafeEquals(adapterTitle, requiredTitle);
-    }
-
-    private boolean typeMatches(final ObjectAdapter adapter) {
-        if (typeBinding == null || !typeBinding.isFound()) {
-            return true;
-        }
-
-        final ObjectSpecification spec = adapter.getSpecification();
-        final String requiredTypeName = typeBinding.getCurrentCell().getText();
-        final String specFullName = spec.getFullIdentifier();
-        if (specFullName.equals(requiredTypeName)) {
-            return true;
-        }
-
-        final String simpleSpecName = StringUtils.simpleName(specFullName);
-        final String simpleRequiredType = StringUtils.simpleName(requiredTypeName);
-        return simpleSpecName.equalsIgnoreCase(simpleRequiredType);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckCollectionContentsPeer.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckCollectionContentsPeer.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckCollectionContentsPeer.java
deleted file mode 100644
index 7155dd5..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckCollectionContentsPeer.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-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 CheckCollectionContentsPeer extends AbstractListFixturePeer {
-
-    public CheckCollectionContentsPeer(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 contains(final String alias) {
-        if (!isValidListAlias()) {
-            return false;
-        }
-
-        final ObjectAdapter adapter = getAliasRegistry().getAliased(alias);
-        if (adapter == null) {
-            return false;
-        }
-        return collectionAdapters().contains(adapter);
-    }
-
-    /**
-     * 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 doesNotContain(final String alias) {
-        if (!isValidListAlias()) {
-            return false;
-        }
-        final ObjectAdapter adapter = getAliasRegistry().getAliased(alias);
-        if (adapter == null) {
-            return false;
-        }
-        return !collectionAdapters().contains(adapter);
-    }
-
-    /**
-     * Returns <tt>true</tt> if is empty.
-     * 
-     * @return <tt>false</tt> if the alias is invalid or does not represent a
-     *         list
-     */
-    public boolean isEmpty() {
-        if (!isValidListAlias()) {
-            return false;
-        }
-        return collectionAdapters().size() == 0;
-    }
-
-    /**
-     * 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 isNotEmpty() {
-        if (!isValidListAlias()) {
-            return false;
-        }
-
-        return collectionAdapters().size() != 0;
-    }
-
-    /**
-     * 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 assertSize(final 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();
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckListConstants.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckListConstants.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckListConstants.java
deleted file mode 100644
index 69c7cf6..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckListConstants.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-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;
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckListPeer.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckListPeer.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckListPeer.java
deleted file mode 100644
index 5244d3d..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/CheckListPeer.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures;
-
-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.spec.ObjectSpecification;
-import org.apache.isis.viewer.bdd.common.AliasRegistry;
-import org.apache.isis.viewer.bdd.common.CellBinding;
-
-public class CheckListPeer extends AbstractListFixturePeer {
-
-    public static enum CheckMode {
-        EXACT {
-            @Override
-            public boolean isExact() {
-                return true;
-            }
-        },
-        NOT_EXACT {
-            @Override
-            public boolean isExact() {
-                return false;
-            }
-        };
-        public abstract boolean isExact();
-    }
-
-    private final CheckMode checkMode;
-
-    private final CellBinding titleBinding;
-    /**
-     * Can be set to null, indicating that no type checking is performed.
-     */
-    private final CellBinding typeBinding;
-
-    /**
-     * Objects found while processing table.
-     */
-    private final List<ObjectAdapter> foundAdapters = new ArrayList<ObjectAdapter>();
-
-    public CheckListPeer(final AliasRegistry aliasesRegistry, final String listAlias, final CheckMode checkMode, final CellBinding titleBinding) {
-        this(aliasesRegistry, listAlias, checkMode, titleBinding, null);
-    }
-
-    public CheckListPeer(final AliasRegistry aliasesRegistry, final 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;
-    }
-
-    public List<ObjectAdapter> getFoundAdapters() {
-        return foundAdapters;
-    }
-
-    public List<ObjectAdapter> getNotFoundAdapters() {
-        final List<ObjectAdapter> allAdapters = new ArrayList<ObjectAdapter>(collectionAdapters());
-        allAdapters.removeAll(foundAdapters);
-        return allAdapters;
-    }
-
-    public boolean findAndAddObject() {
-        final ObjectAdapter foundAdapter = findAdapter();
-        if (foundAdapter == null) {
-            return false;
-        }
-        foundAdapters.add(foundAdapter);
-        return true;
-    }
-
-    private ObjectAdapter findAdapter() {
-        for (final ObjectAdapter adapter : collectionAdapters()) {
-
-            if (!titleMatches(adapter)) {
-                continue; // keep looking
-            }
-            if (!typeMatches(adapter)) {
-                continue; // keep looking
-            }
-
-            return adapter;
-        }
-        return null;
-    }
-
-    private boolean titleMatches(final ObjectAdapter adapter) {
-        final String adapterTitle = adapter.titleString();
-        final String requiredTitle = titleBinding.getCurrentCell().getText();
-        return StringUtils.nullSafeEquals(adapterTitle, requiredTitle);
-    }
-
-    private boolean typeMatches(final ObjectAdapter adapter) {
-        if (typeBinding == null || !typeBinding.isFound()) {
-            return true;
-        }
-
-        final ObjectSpecification spec = adapter.getSpecification();
-        final String requiredTypeName = typeBinding.getCurrentCell().getText();
-        final String specFullName = spec.getFullIdentifier();
-        if (specFullName.equals(requiredTypeName)) {
-            return true;
-        }
-
-        final String simpleSpecName = StringUtils.simpleName(specFullName);
-        final String simpleRequiredType = StringUtils.simpleName(requiredTypeName);
-        return simpleSpecName.equalsIgnoreCase(simpleRequiredType);
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/DebugClockPeer.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/DebugClockPeer.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/DebugClockPeer.java
deleted file mode 100644
index e6a82e6..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/DebugClockPeer.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures;
-
-import java.text.SimpleDateFormat;
-import java.util.Calendar;
-
-import org.apache.isis.applib.clock.Clock;
-import org.apache.isis.viewer.bdd.common.AliasRegistry;
-import org.apache.isis.viewer.bdd.common.CellBinding;
-import org.apache.isis.viewer.bdd.common.ScenarioCell;
-
-public class DebugClockPeer extends AbstractFixturePeer {
-
-    private final CellBinding cellBinding;
-    private final static SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("dd-MMM-yyyy HH:mm");
-
-    public DebugClockPeer(final AliasRegistry aliasesRegistry, final CellBinding cellBinding) {
-        super(aliasesRegistry, cellBinding);
-        this.cellBinding = cellBinding;
-    }
-
-    public ScenarioCell getCurrentCell() {
-        return cellBinding.getCurrentCell();
-    }
-
-    public String getFormattedClockTime() {
-        final Calendar cal = Clock.getTimeAsCalendar();
-        final String formattedDate = DATE_FORMAT.format(cal.getTime());
-        return formattedDate;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/DebugObjectStorePeer.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/DebugObjectStorePeer.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/DebugObjectStorePeer.java
deleted file mode 100644
index 86e0c01..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/DebugObjectStorePeer.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures;
-
-import org.apache.isis.core.commons.debug.DebugString;
-import org.apache.isis.core.runtime.system.persistence.ObjectStore;
-import org.apache.isis.viewer.bdd.common.AliasRegistry;
-import org.apache.isis.viewer.bdd.common.CellBinding;
-
-public class DebugObjectStorePeer extends AbstractFixturePeer {
-
-    public DebugObjectStorePeer(final AliasRegistry aliasesRegistry, final CellBinding... cellBindings) {
-        super(aliasesRegistry, cellBindings);
-    }
-
-    public String debugObjectStore() {
-        final ObjectStore objectStore = getObjectStore();
-        final DebugString debug = new DebugString();
-        objectStore.debugData(debug);
-        return debug.toString().replaceAll("\n", "<br>");
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/DebugServicesPeer.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/DebugServicesPeer.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/DebugServicesPeer.java
deleted file mode 100644
index 767a13d..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/DebugServicesPeer.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures;
-
-import java.util.List;
-
-import org.apache.isis.core.commons.debug.DebugString;
-import org.apache.isis.viewer.bdd.common.AliasRegistry;
-import org.apache.isis.viewer.bdd.common.CellBinding;
-
-public class DebugServicesPeer extends AbstractFixturePeer {
-
-    public DebugServicesPeer(final AliasRegistry aliasesRegistry, final CellBinding... cellBindings) {
-        super(aliasesRegistry, cellBindings);
-    }
-
-    public String debugServices() {
-        final DebugString debug = new DebugString();
-
-        final List<Object> services = getServices();
-
-        for (final Object service : services) {
-            debug.append(service.getClass().getName());
-            debug.append("\n");
-        }
-        return debug.toString().replaceAll("\n", "<br>");
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/SetUpObjectsPeer.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/SetUpObjectsPeer.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/SetUpObjectsPeer.java
deleted file mode 100644
index 321127e..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/SetUpObjectsPeer.java
+++ /dev/null
@@ -1,305 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures;
-
-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;
-import org.apache.isis.core.metamodel.facets.properties.modify.PropertySetterFacet;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
-import org.apache.isis.viewer.bdd.common.AliasRegistry;
-import org.apache.isis.viewer.bdd.common.CellBinding;
-import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
-
-public class SetUpObjectsPeer extends AbstractFixturePeer {
-
-    public static enum Mode {
-        PERSIST, DO_NOT_PERSIST;
-
-        public boolean isPersist() {
-            return this == PERSIST;
-        }
-    }
-
-    public static enum PropertyResult {
-        ALIAS, NO_SUCH_PROPERTY, NOT_A_PROPERTY, OK;
-        public boolean isOk() {
-            return this == OK;
-        }
-    }
-
-    public static enum SetUpObjectResult {
-        OK, NO_ASSOCIATION, CLEARED, CANNOT_CLEAR("(cannot clear)"), CANNOT_SET("(cannot set"), CANNOT_PARSE("(cannot parse)"), UNKNOWN_REFERENCE("(unknown reference)");
-        private String errorMessage;
-
-        private SetUpObjectResult() {
-            this(null);
-        }
-
-        private SetUpObjectResult(final String errorMessage) {
-            this.errorMessage = errorMessage;
-        }
-
-        public boolean isHandled() {
-            return !isError();
-        }
-
-        public boolean isError() {
-            return errorMessage != null;
-        }
-
-        public String getErrorMessage() {
-            return errorMessage;
-        }
-    }
-
-    public interface AssociationVisitor {
-        void visit(OneToOneAssociation association, int colNum);
-    }
-
-    private final ObjectSpecification spec;
-
-    private final List<OneToOneAssociation> properties = new ArrayList<OneToOneAssociation>();
-    private final CellBinding aliasBinding;
-    private final SetUpObjectsPeer.Mode mode;
-
-    private final List<String> cellTextList = new ArrayList<String>();
-    private String alias;
-
-    // ///////////////////////////////////////////////////////////////////////
-    // constructor
-    // ///////////////////////////////////////////////////////////////////////
-
-    public SetUpObjectsPeer(final AliasRegistry aliasRegistry, final String className, final SetUpObjectsPeer.Mode mode, final CellBinding aliasBinding) {
-        super(aliasRegistry, aliasBinding);
-
-        this.spec = loadSpecIfValid(className);
-
-        this.mode = mode;
-        this.aliasBinding = aliasBinding;
-    }
-
-    private ObjectSpecification loadSpecIfValid(final String className) {
-        try {
-            return getSpecificationLoader().loadSpecification(className);
-        } catch (final IsisException ex) {
-            return null;
-        }
-    }
-
-    public boolean isSpecOk() {
-        return spec != null;
-    }
-
-    public List<OneToOneAssociation> getProperties() {
-        return properties;
-    }
-
-    public CellBinding getAliasBinding() {
-        return aliasBinding;
-    }
-
-    // ///////////////////////////////////////////////////////////////////////
-    // header
-    // ///////////////////////////////////////////////////////////////////////
-
-    public PropertyResult definePropertyOrAlias(final String heading, final int colNum) {
-
-        OneToOneAssociation otoa = null;
-
-        try {
-            final int aliasColumn = getAliasBinding().getColumn();
-            if (colNum == aliasColumn) {
-                return PropertyResult.ALIAS;
-            }
-
-            ObjectAssociation association = null;
-            try {
-                final String memberName = StringUtils.memberIdFor(heading);
-                association = spec.getAssociation(memberName);
-            } catch (final Exception ex) {
-                return PropertyResult.NO_SUCH_PROPERTY;
-            }
-
-            if (!association.isOneToOneAssociation()) {
-                return PropertyResult.NOT_A_PROPERTY;
-            }
-
-            otoa = (OneToOneAssociation) association;
-
-            return PropertyResult.OK;
-        } finally {
-            // add an association if OK, add null otherwise
-            getProperties().add(otoa);
-        }
-    }
-
-    // ///////////////////////////////////////////////////////////////////////
-    // each row
-    // ///////////////////////////////////////////////////////////////////////
-
-    /**
-     * Used by Concordion only.
-     * 
-     * <p>
-     * FitNesse, on the other hand, uses a more fine-grained approach, calling
-     * the underlying methods.
-     */
-    public void createObject() throws ScenarioBoundValueException {
-        final ObjectAdapter adapter = createInstance();
-
-        for (int colNum = 0; colNum < getProperties().size(); colNum++) {
-            final SetUpObjectResult result = setUpProperty(adapter, colNum);
-
-            if (!result.isHandled()) {
-                final CellBinding cellBinding = getCellBindings().get(colNum);
-                throw ScenarioBoundValueException.current(cellBinding, result.getErrorMessage());
-            }
-        }
-
-        persistIfNecessary(adapter);
-        alias(adapter);
-        resetForNextObject();
-    }
-
-    public void resetForNextObject() {
-        cellTextList.clear();
-        this.alias = null;
-    }
-
-    public ObjectAdapter createInstance() {
-        if (spec == null) {
-            return null;
-        }
-        return getPersistenceSession().createTransientInstance(spec);
-    }
-
-    public SetUpObjectResult setUpProperty(final ObjectAdapter adapter, final int colNum) {
-
-        final OneToOneAssociation association = getProperties().get(colNum);
-        if (association == null) {
-            return SetUpObjectResult.NO_ASSOCIATION;
-        }
-
-        final String cellText = cellTextList.get(colNum);
-
-        // handle empty cell as null
-        if (cellText == null || cellText.length() == 0) {
-
-            // use clear facet if available
-            final PropertyClearFacet clearFacet = association.getFacet(PropertyClearFacet.class);
-
-            if (clearFacet != null) {
-                clearFacet.clearProperty(adapter);
-                return SetUpObjectResult.CLEARED;
-            }
-
-            // use setter facet otherwise
-            final PropertySetterFacet setterFacet = association.getFacet(PropertySetterFacet.class);
-
-            if (setterFacet != null) {
-                setterFacet.setProperty(adapter, null);
-                return SetUpObjectResult.CLEARED;
-            }
-
-            return SetUpObjectResult.CANNOT_CLEAR;
-        }
-
-        // non-empty, will need a setter
-        final PropertySetterFacet setterFacet = association.getFacet(PropertySetterFacet.class);
-        if (setterFacet == null) {
-            return SetUpObjectResult.CANNOT_SET;
-        }
-
-        final ObjectSpecification fieldSpecification = association.getSpecification();
-        final ParseableFacet parseableFacet = fieldSpecification.getFacet(ParseableFacet.class);
-
-        ObjectAdapter referencedAdapter = null;
-        if (parseableFacet != null) {
-            // handle as parseable value
-            try {
-                referencedAdapter = parseableFacet.parseTextEntry(adapter, cellText, null);
-            } catch (final IllegalArgumentException ex) {
-                return SetUpObjectResult.CANNOT_PARSE;
-            }
-
-        } else {
-            // handle as reference to known object
-            referencedAdapter = getAliasRegistry().getAliased(cellText);
-            if (referencedAdapter == null) {
-                return SetUpObjectResult.UNKNOWN_REFERENCE;
-            }
-        }
-
-        setterFacet.setProperty(adapter, referencedAdapter);
-        return SetUpObjectResult.OK;
-    }
-
-    public void persistIfNecessary(final ObjectAdapter adapter) {
-        if (mode.isPersist()) {
-            // xactn mgmt now done by PersistenceSession#makePersistent()
-            // getTransactionManager().startTransaction();
-            getPersistenceSession().makePersistent(adapter);
-            // getTransactionManager().endTransaction();
-        }
-    }
-
-    public void alias(final ObjectAdapter adapter) {
-        final String alias = aliasFor(adapter);
-        getAliasRegistry().aliasAs(alias, adapter);
-    }
-
-    public String aliasFor(final ObjectAdapter adapter) {
-        if (alias != null) {
-            return alias;
-        } else {
-            final String specShortName = StringUtils.lowerLeading(spec.getShortIdentifier());
-            return getAliasRegistry().aliasPrefixedAs(specShortName, adapter);
-        }
-    }
-
-    public void forEachAssociation(final AssociationVisitor visitor) {
-        for (int colNum = 0; colNum < getProperties().size(); colNum++) {
-            final OneToOneAssociation association = getProperties().get(colNum);
-            if (association != null) {
-                visitor.visit(association, colNum);
-            }
-        }
-    }
-
-    public boolean addPropertyValueOrAlias(final String propertyValue) {
-        cellTextList.add(propertyValue);
-
-        // capture alias if just added
-        final int aliasColumn1based = getAliasBinding().getColumn() + 1;
-        if (cellTextList.size() == aliasColumn1based) {
-            alias = propertyValue;
-        }
-
-        return true;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/UsingIsisViewerPeer.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/UsingIsisViewerPeer.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/UsingIsisViewerPeer.java
deleted file mode 100644
index 7524005..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/UsingIsisViewerPeer.java
+++ /dev/null
@@ -1,386 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.isis.core.commons.exceptions.NotYetImplementedException;
-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.object.parseable.TextEntryParseException;
-import org.apache.isis.core.metamodel.spec.ActionType;
-import org.apache.isis.core.metamodel.spec.ObjectActionSet;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
-import org.apache.isis.core.metamodel.spec.feature.ObjectActionContainer.Contributed;
-import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
-import org.apache.isis.core.runtime.system.DeploymentType;
-import org.apache.isis.viewer.bdd.common.AliasRegistry;
-import org.apache.isis.viewer.bdd.common.CellBinding;
-import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
-import org.apache.isis.viewer.bdd.common.ScenarioCell;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.AddToCollection;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.CheckAction;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.CheckAddToCollection;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.CheckClearProperty;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.CheckCollection;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.CheckObject;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.CheckProperty;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.CheckRemoveFromCollection;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.CheckSetProperty;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.ClearProperty;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.GetActionParameterChoices;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.GetActionParameterDefault;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.GetCollection;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.GetProperty;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.GetPropertyChoices;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.GetPropertyDefault;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.InvokeAction;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.Perform;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.RemoveFromCollection;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.SaveObject;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.SetProperty;
-import org.apache.isis.viewer.bdd.common.parsers.DateParser;
-
-public class UsingIsisViewerPeer extends AbstractFixturePeer {
-
-    private static List<Perform> performCommands(final Perform.Mode mode) {
-        final ArrayList<Perform> commands = new ArrayList<Perform>();
-
-        commands.add(new CheckProperty(mode));
-        commands.add(new CheckSetProperty(mode));
-        commands.add(new CheckClearProperty(mode));
-        commands.add(new GetProperty(mode));
-        commands.add(new SetProperty(mode));
-        commands.add(new ClearProperty(mode));
-        commands.add(new GetPropertyDefault(mode));
-        commands.add(new GetPropertyChoices(mode));
-
-        commands.add(new CheckCollection(mode));
-        commands.add(new CheckAddToCollection(mode));
-        commands.add(new CheckRemoveFromCollection(mode));
-        commands.add(new AddToCollection(mode));
-        commands.add(new RemoveFromCollection(mode));
-        commands.add(new GetCollection(mode));
-
-        commands.add(new CheckAction(mode));
-        commands.add(new InvokeAction(mode));
-        commands.add(new GetActionParameterDefault(mode));
-        commands.add(new GetActionParameterChoices(mode));
-
-        commands.add(new CheckObject(mode));
-        commands.add(new SaveObject(mode));
-
-        return commands;
-    }
-
-    // //////////////////////////////////////////////////////////////////
-    // constructor
-    // //////////////////////////////////////////////////////////////////
-
-    private final CellBinding onObjectBinding;
-    private final CellBinding aliasResultAsBinding;
-    private final CellBinding performBinding;
-    private final CellBinding onMemberBinding;
-    private final CellBinding thatItBinding;
-    private final CellBinding arg0Binding;
-
-    private final DeploymentType deploymentType;
-    private final DateParser dateParser;
-
-    private final Map<String, Perform> commandByKey = new HashMap<String, Perform>();
-
-    public UsingIsisViewerPeer(final AliasRegistry aliasesRegistry, final DeploymentType deploymentType, final DateParser dateParser, final Perform.Mode mode, final CellBinding onObjectBinding, final CellBinding aliasResultAsBinding, final CellBinding performBinding,
-            final CellBinding onMemberBinding, final CellBinding thatItBinding, final CellBinding arg0Binding) {
-        super(aliasesRegistry, onObjectBinding, aliasResultAsBinding, performBinding, onMemberBinding, thatItBinding, arg0Binding);
-
-        this.onObjectBinding = onObjectBinding;
-        this.aliasResultAsBinding = aliasResultAsBinding;
-        this.performBinding = performBinding;
-        this.onMemberBinding = onMemberBinding;
-        this.thatItBinding = thatItBinding;
-        this.arg0Binding = arg0Binding;
-
-        this.deploymentType = deploymentType;
-        this.dateParser = dateParser;
-
-        final List<Perform> performCommands = performCommands(mode);
-        for (final Perform command : performCommands) {
-            commandByKey.put(command.getKey(), command);
-        }
-    }
-
-    public DeploymentType getDeploymentType() {
-        return deploymentType;
-    }
-
-    public DateParser getDateParser() {
-        return dateParser;
-    }
-
-    public CellBinding getOnObjectBinding() {
-        return onObjectBinding;
-    }
-
-    public CellBinding getAliasResultAsBinding() {
-        return aliasResultAsBinding;
-    }
-
-    public CellBinding getOnMemberBinding() {
-        return onMemberBinding;
-    }
-
-    public CellBinding getPerformBinding() {
-        return performBinding;
-    }
-
-    public CellBinding getThatItBinding() {
-        return thatItBinding;
-    }
-
-    public CellBinding getArg0Binding() {
-        return arg0Binding;
-    }
-
-    public boolean isArg0BindingLast() {
-        return !bindingAfterArg0();
-
-    }
-
-    private boolean bindingAfterArg0() {
-        if (!getArg0Binding().isFound()) {
-            return false;
-        }
-        for (final CellBinding binding : getCellBindings()) {
-            if (binding.getColumn() > getArg0Binding().getColumn()) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    // //////////////////////////////////////////////////////////////////
-    // validate API
-    // //////////////////////////////////////////////////////////////////
-
-    public ObjectAdapter validateOnObject() throws ScenarioBoundValueException {
-
-        final ScenarioCell onObjectCell = onObjectBinding.getCurrentCell();
-        String onObject = onObjectCell.getText();
-        if (onObject == null) {
-            if (previousOnObject == null) {
-                throw ScenarioBoundValueException.current(onObjectBinding, "(required)");
-            }
-            onObject = previousOnObject;
-        } else {
-            previousOnObject = onObject;
-        }
-        final ObjectAdapter onAdapter = getAliasRegistry().getAliased(onObject);
-        if (onAdapter == null) {
-            throw ScenarioBoundValueException.current(onMemberBinding, "(unknown object)");
-        }
-        return onAdapter;
-    }
-
-    public String validateAliasAs() throws ScenarioBoundValueException {
-        if (getAliasResultAsBinding() == null) {
-            return null;
-        }
-        final ScenarioCell aliasCell = aliasResultAsBinding.getCurrentCell();
-        if (aliasCell == null) {
-            return null;
-        }
-
-        final String aliasAs = aliasCell.getText();
-        if (getAliasRegistry().getAliased(aliasAs) != null) {
-            throw ScenarioBoundValueException.current(aliasResultAsBinding, "(already used)");
-        }
-        return aliasAs;
-    }
-
-    public ObjectMember validateOnMember(final ObjectAdapter onAdapter) throws ScenarioBoundValueException {
-
-        final ScenarioCell onMemberCell = onMemberBinding.getCurrentCell();
-        final String onMember = onMemberCell.getText();
-
-        if (StringUtils.isNullOrEmpty(onMember)) {
-            throw ScenarioBoundValueException.current(onMemberBinding, "(required)");
-        }
-
-        if (onAdapter == null) {
-            return null;
-        }
-
-        // see if property, collection or action.
-        final String memberId = StringUtils.memberIdFor(onMember);
-        final ObjectSpecification spec = onAdapter.getSpecification();
-        final List<ObjectMember> objectMembers = new ArrayList<ObjectMember>();
-
-        objectMembers.addAll(spec.getAssociations());
-
-        // see if action (of any type)
-        objectMembers.addAll(spec.getObjectActions(Arrays.asList(ActionType.USER, ActionType.EXPLORATION, ActionType.DEBUG), Contributed.INCLUDED));
-        for (final ObjectMember member : objectMembers) {
-            if (matchesId(member, memberId)) {
-                return member;
-            }
-            // special handling for contributed actions.
-            if (member instanceof ObjectActionSet) {
-                final ObjectActionSet actionSet = (ObjectActionSet) member;
-                for (final ObjectAction contributedAction : actionSet.getActions()) {
-                    if (contributedAction.getId().equals(memberId)) {
-                        return contributedAction;
-                    }
-                }
-            }
-        }
-        throw ScenarioBoundValueException.current(onMemberBinding, "(unknown member)");
-    }
-
-    public Perform validatePerform() throws ScenarioBoundValueException {
-        final String perform = performBinding.getCurrentCell().getText();
-        if (perform == null) {
-            throw ScenarioBoundValueException.current(performBinding, "(required)");
-        }
-        final Perform performCommand = commandByKey.get(perform);
-        if (performCommand == null) {
-            throw ScenarioBoundValueException.current(performBinding, "(unknown interaction)");
-        }
-        return performCommand;
-    }
-
-    private boolean matchesId(final ObjectMember member, final String memberId) {
-        return member.getId().equals(memberId);
-    }
-
-    // //////////////////////////////////////////////////////////////////
-    // "perform" API
-    // //////////////////////////////////////////////////////////////////
-
-    public void performCommand(final ObjectAdapter onAdapter, final String aliasAs, final ObjectMember objectMember, final Perform performCommand, final List<ScenarioCell> argumentStoryCells) throws ScenarioBoundValueException {
-        final PerformContext performContext = new PerformContext(this, onAdapter, objectMember, argumentStoryCells);
-        try {
-            performCommand.perform(performContext);
-        } catch (final RuntimeException ex) {
-            // handler should have colored in invalid cells.
-        }
-        aliasResultFromPerformCommand(performCommand, aliasAs);
-    }
-
-    private void aliasResultFromPerformCommand(final Perform performCommand, final String aliasAs) throws ScenarioBoundValueException {
-        if (StringUtils.isNullOrEmpty(aliasAs)) {
-            return;
-        }
-        final ObjectAdapter resultAdapter = performCommand.getResult();
-        if (resultAdapter == null) {
-            throw ScenarioBoundValueException.current(onMemberBinding, "(no result)");
-        }
-        getAliasRegistry().aliasAs(aliasAs, resultAdapter);
-    }
-
-    // //////////////////////////////////////////////////////////////////
-    //
-    // //////////////////////////////////////////////////////////////////
-
-    private String previousOnObject = null;
-
-    /**
-     * Not public API
-     */
-    public void provideDefault(final ScenarioCell storySource, final String resultStr) {
-        // TODO Auto-generated method stub
-        throw new NotYetImplementedException();
-    }
-
-    /**
-     * Not public API
-     */
-    public ObjectAdapter getAdapter(final ObjectAdapter contextAdapter, final ObjectSpecification noSpec, final CellBinding contextBinding, final ScenarioCell paramCell) throws ScenarioBoundValueException {
-
-        final String cellText = paramCell.getText();
-
-        // see if can handle as parseable value
-        final ParseableFacet parseableFacet = noSpec.getFacet(ParseableFacet.class);
-        if (parseableFacet != null) {
-            try {
-                return parseableFacet.parseTextEntry(contextAdapter, cellText, null);
-            } catch (final TextEntryParseException ex) {
-                throw ScenarioBoundValueException.arg(contextBinding, paramCell, "(cannot parse '" + cellText + "')");
-            } catch (final IllegalArgumentException ex) {
-                // REVIEW: isn't what is thrown, but perhaps
-                // TextEntryParseException should inherit from
-                // IllegalArgumentException?
-                throw ScenarioBoundValueException.arg(contextBinding, paramCell, "(cannot parse '" + cellText + "')");
-            }
-        }
-
-        // otherwise, handle as reference to known object
-        final ObjectAdapter adapter = getAliasRegistry().getAliased(cellText);
-        if (adapter == null) {
-            throw ScenarioBoundValueException.arg(contextBinding, paramCell, "(unknown reference'" + cellText + "')");
-        }
-
-        return adapter;
-    }
-
-    /**
-     * Not public API
-     * 
-     * <p>
-     * Ensures that there are at least enough arguments for the number of
-     * parameters required.
-     */
-    public ObjectAdapter[] getAdapters(final ObjectAdapter onAdapter, final ObjectAction objectAction, final CellBinding onMemberBinding, final List<ScenarioCell> argumentCells) throws ScenarioBoundValueException {
-        final List<ObjectActionParameter> parameters = objectAction.getParameters();
-
-        final int parameterCount = parameters.size();
-        if (argumentCells.size() < parameterCount) {
-            throw ScenarioBoundValueException.current(onMemberBinding, "(action requires " + parameterCount + " arguments)");
-        }
-        final ObjectAdapter[] adapters = new ObjectAdapter[parameterCount];
-
-        for (int i = 0; i < parameterCount; i++) {
-            final ScenarioCell paramCell = argumentCells.get(i);
-            final ObjectActionParameter parameter = parameters.get(i);
-            adapters[i] = getAdapter(null, parameter.getSpecification(), onMemberBinding, paramCell);
-        }
-        return adapters;
-    }
-
-    /**
-     * Not public API
-     */
-    public ObjectAdapter toAdaptedListOfPojos(final ObjectAdapter[] choiceAdapters) {
-        final List<Object> choiceList = new ArrayList<Object>();
-        if (choiceAdapters != null) {
-            for (final ObjectAdapter adapter : choiceAdapters) {
-                choiceList.add(adapter.getObject());
-            }
-        }
-        return getAdapterManager().adapterFor(choiceList);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/AddToCollection.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/AddToCollection.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/AddToCollection.java
deleted file mode 100644
index 1dff803..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/AddToCollection.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.consent.Consent;
-import org.apache.isis.core.metamodel.consent.InteractionInvocationMethod;
-import org.apache.isis.core.metamodel.facets.collections.modify.CollectionAddToFacet;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
-import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
-import org.apache.isis.viewer.bdd.common.CellBinding;
-import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
-import org.apache.isis.viewer.bdd.common.ScenarioCell;
-
-public class AddToCollection extends PerformAbstractTypeParams {
-
-    private ObjectAdapter result;
-
-    public AddToCollection(final Perform.Mode mode) {
-        super("add to collection", Type.COLLECTION, NumParameters.ONE, mode);
-    }
-
-    @Override
-    public void doHandle(final PerformContext performContext) throws ScenarioBoundValueException {
-
-        final ObjectAdapter onAdapter = performContext.getOnAdapter();
-        final ObjectMember nakedObjectMember = performContext.getObjectMember();
-        final CellBinding onMemberBinding = performContext.getPeer().getOnMemberBinding();
-
-        final OneToManyAssociation otma = (OneToManyAssociation) nakedObjectMember;
-
-        final CollectionAddToFacet addToFacet = nakedObjectMember.getFacet(CollectionAddToFacet.class);
-        if (addToFacet == null) {
-            throw ScenarioBoundValueException.current(onMemberBinding, "(cannot add to collection)");
-        }
-
-        // safe since guaranteed by superclass
-        final CellBinding arg0Binding = performContext.getPeer().getArg0Binding();
-        final ScenarioCell arg0Cell = arg0Binding.getCurrentCell();
-        final String toAddAlias = arg0Cell.getText();
-
-        final ObjectAdapter toAddAdapter = performContext.getPeer().getAliasRegistry().getAliased(toAddAlias);
-        if (toAddAdapter == null) {
-            throw ScenarioBoundValueException.current(arg0Binding, "(unknown alias)");
-        }
-
-        // validate argument
-        otma.createValidateAddInteractionContext(getSession(), InteractionInvocationMethod.BY_USER, onAdapter, toAddAdapter);
-        final Consent validToAdd = otma.isValidToAdd(onAdapter, toAddAdapter);
-        if (validToAdd.isVetoed()) {
-            throw ScenarioBoundValueException.current(arg0Binding, validToAdd.getReason());
-        }
-
-        // add
-        addToFacet.add(onAdapter, toAddAdapter);
-    }
-
-    @Override
-    public ObjectAdapter getResult() {
-        return result;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckAction.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckAction.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckAction.java
deleted file mode 100644
index 4359027..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckAction.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform;
-
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.Disabled;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.Hidden;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.PerformCheckThatAbstract;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.Usable;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.Visible;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.action.ArgumentSetNotValid;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.action.ArgumentSetValid;
-
-public class CheckAction extends PerformCheckThatAbstract {
-
-    public CheckAction(final Perform.Mode mode) {
-        super("check action", OnMemberColumn.REQUIRED, mode, new Hidden(), new Visible(), new Disabled(), new Usable(), new ArgumentSetValid(), new ArgumentSetNotValid());
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckAddToCollection.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckAddToCollection.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckAddToCollection.java
deleted file mode 100644
index 2e35ebe..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckAddToCollection.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform;
-
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.AssertsValidity;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.PerformCheckThatAbstract;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.collections.ProposedAddTo;
-
-public class CheckAddToCollection extends PerformCheckThatAbstract {
-
-    public CheckAddToCollection(final Perform.Mode mode) {
-        super("check add to collection", OnMemberColumn.REQUIRED, mode, new ProposedAddTo(AssertsValidity.VALID), new ProposedAddTo(AssertsValidity.INVALID));
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckClearProperty.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckClearProperty.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckClearProperty.java
deleted file mode 100644
index 865163b..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckClearProperty.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform;
-
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.AssertsValidity;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.PerformCheckThatAbstract;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.property.ProposedClear;
-
-public class CheckClearProperty extends PerformCheckThatAbstract {
-
-    public CheckClearProperty(final Perform.Mode mode) {
-        super("check clear property", OnMemberColumn.REQUIRED, mode, new ProposedClear(AssertsValidity.VALID), new ProposedClear(AssertsValidity.INVALID));
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckCollection.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckCollection.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckCollection.java
deleted file mode 100644
index 08fa553..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckCollection.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform;
-
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.AssertsContainment;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.AssertsEmpty;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.Disabled;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.Hidden;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.PerformCheckThatAbstract;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.Usable;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.Visible;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.collections.Containment;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.collections.Emptiness;
-
-public class CheckCollection extends PerformCheckThatAbstract {
-
-    public CheckCollection(final Perform.Mode mode) {
-        super("check collection", OnMemberColumn.REQUIRED, mode, new Hidden(), new Visible(), new Disabled(), new Usable(), new Emptiness(AssertsEmpty.EMPTY), new Emptiness(AssertsEmpty.NOT_EMPTY), new Containment(AssertsContainment.CONTAINS), new Containment(AssertsContainment.DOES_NOT_CONTAIN));
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckObject.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckObject.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckObject.java
deleted file mode 100644
index 93d677a..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckObject.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform;
-
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.PerformCheckThatAbstract;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.object.NotSaved;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.object.NotValid;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.object.Saved;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.object.Valid;
-
-public class CheckObject extends PerformCheckThatAbstract {
-
-    public CheckObject(final Perform.Mode mode) {
-        super("check object", OnMemberColumn.NOT_REQUIRED, mode, new Valid(), new NotValid(), new NotSaved(), new Saved());
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckProperty.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckProperty.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckProperty.java
deleted file mode 100644
index e69d8c6..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckProperty.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform;
-
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.Disabled;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.Hidden;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.PerformCheckThatAbstract;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.Usable;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.Visible;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.property.Contains;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.property.DoesNotContain;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.property.Empty;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.property.NotEmpty;
-
-public class CheckProperty extends PerformCheckThatAbstract {
-
-    public CheckProperty(final Perform.Mode mode) {
-        super("check property", OnMemberColumn.REQUIRED, mode, new Hidden(), new Visible(), new Disabled(), new Usable(), new Contains(), new DoesNotContain(), new Empty(), new NotEmpty());
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckRemoveFromCollection.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckRemoveFromCollection.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckRemoveFromCollection.java
deleted file mode 100644
index a39c7fb..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckRemoveFromCollection.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform;
-
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.AssertsValidity;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.PerformCheckThatAbstract;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.collections.ProposedRemoveFrom;
-
-public class CheckRemoveFromCollection extends PerformCheckThatAbstract {
-
-    public CheckRemoveFromCollection(final Perform.Mode mode) {
-        super("check remove from collection", OnMemberColumn.REQUIRED, mode, new ProposedRemoveFrom(AssertsValidity.VALID), new ProposedRemoveFrom(AssertsValidity.INVALID));
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckSetProperty.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckSetProperty.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckSetProperty.java
deleted file mode 100644
index ea4a853..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/CheckSetProperty.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform;
-
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.AssertsValidity;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.PerformCheckThatAbstract;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.property.ProposedSet;
-
-public class CheckSetProperty extends PerformCheckThatAbstract {
-
-    public CheckSetProperty(final Perform.Mode mode) {
-        super("check set property", OnMemberColumn.REQUIRED, mode, new ProposedSet(AssertsValidity.VALID), new ProposedSet(AssertsValidity.INVALID));
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/ClearProperty.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/ClearProperty.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/ClearProperty.java
deleted file mode 100644
index 2568d42..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/ClearProperty.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.consent.Consent;
-import org.apache.isis.core.metamodel.facets.properties.modify.PropertyClearFacet;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
-import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
-import org.apache.isis.viewer.bdd.common.CellBinding;
-import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
-
-public class ClearProperty extends PerformAbstractTypeParams {
-
-    private ObjectAdapter result;
-
-    public ClearProperty(final Perform.Mode mode) {
-        super("clear property", Type.PROPERTY, NumParameters.ZERO, mode);
-    }
-
-    @Override
-    public void doHandle(final PerformContext performContext) throws ScenarioBoundValueException {
-
-        final ObjectAdapter onAdapter = performContext.getOnAdapter();
-        final ObjectMember nakedObjectMember = performContext.getObjectMember();
-
-        final OneToOneAssociation otoa = (OneToOneAssociation) nakedObjectMember;
-
-        // set
-        final PropertyClearFacet clearFacet = otoa.getFacet(PropertyClearFacet.class);
-        final CellBinding thatItBinding = performContext.getPeer().getThatItBinding();
-        if (clearFacet == null) {
-            throw ScenarioBoundValueException.current(thatItBinding, "(cannot clear)");
-        }
-
-        // validate setting to null
-        final Consent validConsent = otoa.isAssociationValid(onAdapter, null);
-        if (validConsent.isVetoed()) {
-            throw ScenarioBoundValueException.current(thatItBinding, validConsent.getReason());
-        }
-
-        clearFacet.clearProperty(onAdapter);
-
-    }
-
-    @Override
-    public ObjectAdapter getResult() {
-        return result;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/GetActionParameterChoices.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/GetActionParameterChoices.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/GetActionParameterChoices.java
deleted file mode 100644
index bf43aa1..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/GetActionParameterChoices.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
-import org.apache.isis.viewer.bdd.common.CellBinding;
-import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
-import org.apache.isis.viewer.bdd.common.ScenarioCell;
-
-public class GetActionParameterChoices extends PerformAbstractTypeParams {
-
-    private ObjectAdapter result;
-
-    public GetActionParameterChoices(final Perform.Mode mode) {
-        super("get action parameter choices", Type.ACTION, NumParameters.ONE, mode);
-    }
-
-    @Override
-    public void doHandle(final PerformContext performContext) throws ScenarioBoundValueException {
-
-        final ObjectAdapter onAdapter = performContext.getOnAdapter();
-        final ObjectMember nakedObjectMember = performContext.getObjectMember();
-        final CellBinding arg0Binding = performContext.getPeer().getArg0Binding();
-        final ScenarioCell arg0Cell = arg0Binding.getCurrentCell();
-
-        int requestedParamNum = -1;
-        try {
-            requestedParamNum = Integer.valueOf(arg0Cell.getText());
-        } catch (final NumberFormatException ex) {
-            throw ScenarioBoundValueException.current(arg0Binding, ex.getMessage());
-        }
-
-        final ObjectAction noa = (ObjectAction) nakedObjectMember;
-        final int parameterCount = noa.getParameterCount();
-        if (requestedParamNum < 0 || requestedParamNum > parameterCount - 1) {
-            throw ScenarioBoundValueException.current(arg0Binding, "(must be between 0 and " + (parameterCount - 1) + ")");
-        }
-
-        final ObjectAdapter[][] allParameterChoices = noa.getChoices(onAdapter);
-        result = performContext.getPeer().toAdaptedListOfPojos(allParameterChoices[requestedParamNum]);
-    }
-
-    @Override
-    public ObjectAdapter getResult() {
-        return result;
-    }
-
-}


[16/19] ISIS-463: mothballing BDD viewer

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/action/ArgumentSetValid.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/action/ArgumentSetValid.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/action/ArgumentSetValid.java
deleted file mode 100644
index 666b2e3..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/action/ArgumentSetValid.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.action;
-
-import java.util.List;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.consent.Consent;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
-import org.apache.isis.viewer.bdd.common.CellBinding;
-import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
-import org.apache.isis.viewer.bdd.common.ScenarioCell;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.ThatSubcommandAbstract;
-
-public class ArgumentSetValid extends ThatSubcommandAbstract {
-
-    public ArgumentSetValid() {
-        super("is valid for", "is valid", "valid");
-    }
-
-    // TODO: a lot of duplication with InvokeAction; simplify somehow?
-    @Override
-    public ObjectAdapter that(final PerformContext performContext) throws ScenarioBoundValueException {
-
-        final ObjectAdapter onAdapter = performContext.getOnAdapter();
-        final ObjectMember nakedObjectMember = performContext.getObjectMember();
-        final CellBinding onMemberBinding = performContext.getPeer().getOnMemberBinding();
-        final List<ScenarioCell> argumentCells = performContext.getArgumentCells();
-
-        final ObjectAction nakedObjectAction = (ObjectAction) nakedObjectMember;
-        final int parameterCount = nakedObjectAction.getParameterCount();
-        final boolean isContributedOneArgAction = nakedObjectAction.isContributed() && parameterCount == 1;
-
-        if (isContributedOneArgAction) {
-            return null;
-        }
-
-        // lookup arguments
-        final ObjectAdapter[] proposedArguments = performContext.getPeer().getAdapters(onAdapter, nakedObjectAction, onMemberBinding, argumentCells);
-
-        // validate arguments
-        final Consent argSetValid = nakedObjectAction.isProposedArgumentSetValid(onAdapter, proposedArguments);
-        if (argSetValid.isVetoed()) {
-            throw ScenarioBoundValueException.current(onMemberBinding, argSetValid.getReason());
-        }
-
-        // execute
-        return null;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/collections/Containment.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/collections/Containment.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/collections/Containment.java
deleted file mode 100644
index ba485fb..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/collections/Containment.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.collections;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
-import org.apache.isis.viewer.bdd.common.CellBinding;
-import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
-import org.apache.isis.viewer.bdd.common.ScenarioCell;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.AssertsContainment;
-
-public class Containment extends ThatAbstract {
-
-    private final AssertsContainment assertion;
-
-    public Containment(final AssertsContainment assertion) {
-        super(assertion.getKey());
-        this.assertion = assertion;
-    }
-
-    @Override
-    protected void doThat(final PerformContext performContext, final Iterable<ObjectAdapter> collection) throws ScenarioBoundValueException {
-
-        final ObjectMember nakedObjectMember = performContext.getObjectMember();
-        final CellBinding thatBinding = performContext.getPeer().getThatItBinding();
-        final CellBinding arg0Binding = performContext.getPeer().getArg0Binding();
-
-        if (!arg0Binding.isFound()) {
-            throw ScenarioBoundValueException.current(thatBinding, "(requires argument)");
-        }
-
-        final ScenarioCell arg0Cell = arg0Binding.getCurrentCell();
-
-        final ObjectAdapter containedAdapter = performContext.getPeer().getAdapter(null, nakedObjectMember.getSpecification(), arg0Binding, arg0Cell);
-
-        boolean contains = false;
-        for (final ObjectAdapter eachAdapter : collection) {
-            if (containedAdapter == eachAdapter) {
-                contains = true;
-                break;
-            }
-        }
-
-        if (!assertion.isSatisfiedBy(contains)) {
-            throw ScenarioBoundValueException.current(arg0Binding, assertion.getErrorMsgIfNotSatisfied());
-        }
-
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/collections/Emptiness.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/collections/Emptiness.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/collections/Emptiness.java
deleted file mode 100644
index e07ad75..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/collections/Emptiness.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.collections;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.viewer.bdd.common.CellBinding;
-import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.AssertsEmpty;
-
-public class Emptiness extends ThatAbstract {
-
-    private final AssertsEmpty assertion;
-
-    public Emptiness(final AssertsEmpty assertion) {
-        super(assertion.getKey());
-        this.assertion = assertion;
-    }
-
-    @Override
-    protected void doThat(final PerformContext performContext, final Iterable<ObjectAdapter> collection) throws ScenarioBoundValueException {
-
-        boolean empty = true;
-        for (@SuppressWarnings("unused")
-        final ObjectAdapter eachObject : collection) {
-            empty = false;
-        }
-
-        if (!assertion.isSatisfiedBy(empty)) {
-            final CellBinding thatItBinding = performContext.getPeer().getThatItBinding();
-            throw ScenarioBoundValueException.current(thatItBinding, assertion.getErrorMsgIfNotSatisfied());
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/collections/ProposedAddTo.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/collections/ProposedAddTo.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/collections/ProposedAddTo.java
deleted file mode 100644
index 95cfd4c..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/collections/ProposedAddTo.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.collections;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.consent.Consent;
-import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.AssertsValidity;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.ProposedArgumentValidityAbstract;
-
-public class ProposedAddTo extends ProposedArgumentValidityAbstract {
-
-    public ProposedAddTo(final AssertsValidity assertion) {
-        super(assertion);
-    }
-
-    @Override
-    protected Consent determineConsent(final PerformContext performContext, final ObjectAdapter toValidateAdapter) {
-
-        final ObjectAdapter onAdapter = performContext.getOnAdapter();
-        final OneToManyAssociation otma = (OneToManyAssociation) performContext.getObjectMember();
-
-        return otma.isValidToAdd(onAdapter, toValidateAdapter);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/collections/ProposedRemoveFrom.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/collections/ProposedRemoveFrom.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/collections/ProposedRemoveFrom.java
deleted file mode 100644
index dc03f81..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/collections/ProposedRemoveFrom.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.collections;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.consent.Consent;
-import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.AssertsValidity;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.ProposedArgumentValidityAbstract;
-
-public class ProposedRemoveFrom extends ProposedArgumentValidityAbstract {
-
-    public ProposedRemoveFrom(final AssertsValidity assertion) {
-        super(assertion);
-    }
-
-    @Override
-    protected Consent determineConsent(final PerformContext performContext, final ObjectAdapter toValidateAdapter) {
-
-        final ObjectAdapter onAdapter = performContext.getOnAdapter();
-        final OneToManyAssociation otma = (OneToManyAssociation) performContext.getObjectMember();
-
-        return otma.isValidToRemove(onAdapter, toValidateAdapter);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/collections/Size.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/collections/Size.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/collections/Size.java
deleted file mode 100644
index 49ce0b0..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/collections/Size.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.collections;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.viewer.bdd.common.CellBinding;
-import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
-import org.apache.isis.viewer.bdd.common.ScenarioCell;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
-
-public class Size extends ThatAbstract {
-
-    public Size() {
-        super("size");
-    }
-
-    @Override
-    protected void doThat(final PerformContext performContext, final Iterable<ObjectAdapter> collection) throws ScenarioBoundValueException {
-
-        final CellBinding thatBinding = performContext.getPeer().getThatItBinding();
-        final CellBinding arg0Binding = performContext.getPeer().getArg0Binding();
-
-        if (!arg0Binding.isFound()) {
-            throw ScenarioBoundValueException.current(thatBinding, "(requires argument)");
-        }
-
-        final ScenarioCell arg0Cell = arg0Binding.getCurrentCell();
-
-        final String expectedSizeStr = arg0Cell.getText();
-        final int expectedSize;
-        try {
-            expectedSize = Integer.parseInt(expectedSizeStr);
-        } catch (final NumberFormatException ex) {
-            throw ScenarioBoundValueException.current(arg0Binding, "(not an integer)");
-        }
-
-        if (expectedSize <= 0) {
-            throw ScenarioBoundValueException.current(arg0Binding, "(not a positive integer)");
-        }
-
-        int actualSize = 0;
-        for (@SuppressWarnings("unused")
-        final ObjectAdapter eachObject : collection) {
-            actualSize++;
-        }
-
-        if (expectedSize != actualSize) {
-            throw ScenarioBoundValueException.current(arg0Binding, "" + actualSize);
-        }
-
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/collections/ThatAbstract.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/collections/ThatAbstract.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/collections/ThatAbstract.java
deleted file mode 100644
index e5a39f5..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/collections/ThatAbstract.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.collections;
-
-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.feature.OneToManyAssociation;
-import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.ThatSubcommandAbstract;
-
-public abstract class ThatAbstract extends ThatSubcommandAbstract {
-
-    public ThatAbstract(final String key) {
-        super(key);
-    }
-
-    @Override
-    public ObjectAdapter that(final PerformContext performContext) throws ScenarioBoundValueException {
-
-        final ObjectAdapter onAdapter = performContext.getOnAdapter();
-        final OneToManyAssociation otma = (OneToManyAssociation) performContext.getObjectMember();
-
-        final ObjectAdapter nakedObjectRepresentingCollection = otma.get(onAdapter);
-        final CollectionFacet collectionFacet = nakedObjectRepresentingCollection.getSpecification().getFacet(CollectionFacet.class);
-
-        doThat(performContext, collectionFacet.iterable(nakedObjectRepresentingCollection));
-
-        return nakedObjectRepresentingCollection; // can alias if wish
-    }
-
-    protected abstract void doThat(PerformContext performContext, Iterable<ObjectAdapter> collection) throws ScenarioBoundValueException;
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/object/NotSaved.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/object/NotSaved.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/object/NotSaved.java
deleted file mode 100644
index 544fe98..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/object/NotSaved.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.object;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.viewer.bdd.common.CellBinding;
-import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.ThatSubcommandAbstract;
-
-public class NotSaved extends ThatSubcommandAbstract {
-
-    public NotSaved() {
-        super("is not saved", "is not persistent", "is not persisted", "not saved", "not persistent", "not persisted");
-    }
-
-    @Override
-    public ObjectAdapter that(final PerformContext performContext) throws ScenarioBoundValueException {
-
-        final ObjectAdapter onAdapter = performContext.getOnAdapter();
-        final CellBinding thatItBinding = performContext.getPeer().getThatItBinding();
-
-        if (onAdapter.representsPersistent()) {
-            throw ScenarioBoundValueException.current(thatItBinding, "(saved)");
-        }
-
-        return null;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/object/NotValid.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/object/NotValid.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/object/NotValid.java
deleted file mode 100644
index f85f85c..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/object/NotValid.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.object;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.viewer.bdd.common.CellBinding;
-import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.ThatSubcommandAbstract;
-
-public class NotValid extends ThatSubcommandAbstract {
-
-    public NotValid() {
-        super("is not valid", "is invalid", "not valid", "invalid");
-    }
-
-    @Override
-    public ObjectAdapter that(final PerformContext performContext) throws ScenarioBoundValueException {
-
-        final CellBinding thatItBinding = performContext.getPeer().getThatItBinding();
-
-        if (performContext.validObjectConsent().isAllowed()) {
-            throw ScenarioBoundValueException.current(thatItBinding, "(valid)");
-        }
-
-        return null;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/object/Saved.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/object/Saved.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/object/Saved.java
deleted file mode 100644
index fdad338..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/object/Saved.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.object;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.viewer.bdd.common.CellBinding;
-import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.ThatSubcommandAbstract;
-
-public class Saved extends ThatSubcommandAbstract {
-
-    public Saved() {
-        super("is saved", "is persistent", "is persisted", "saved", "persistent", "persisted");
-    }
-
-    @Override
-    public ObjectAdapter that(final PerformContext performContext) throws ScenarioBoundValueException {
-
-        final ObjectAdapter onAdapter = performContext.getOnAdapter();
-        final CellBinding thatItBinding = performContext.getPeer().getThatItBinding();
-
-        if (!onAdapter.representsPersistent()) {
-            throw ScenarioBoundValueException.current(thatItBinding, "(not saved)");
-        }
-
-        return null;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/object/Valid.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/object/Valid.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/object/Valid.java
deleted file mode 100644
index 774ed63..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/object/Valid.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.object;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.viewer.bdd.common.CellBinding;
-import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.ThatSubcommandAbstract;
-
-public class Valid extends ThatSubcommandAbstract {
-
-    public Valid() {
-        super("is valid", "valid");
-    }
-
-    @Override
-    public ObjectAdapter that(final PerformContext performContext) throws ScenarioBoundValueException {
-
-        if (!performContext.validObjectConsent().isAllowed()) {
-            final CellBinding thatItBinding = performContext.getPeer().getThatItBinding();
-            throw ScenarioBoundValueException.current(thatItBinding, "(not valid)");
-        }
-
-        return null;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/property/Contains.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/property/Contains.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/property/Contains.java
deleted file mode 100644
index 4334c82..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/property/Contains.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.property;
-
-import java.util.Date;
-
-import org.apache.isis.core.commons.lang.StringUtils;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
-import org.apache.isis.core.progmodel.facets.value.date.DateValueFacet;
-import org.apache.isis.viewer.bdd.common.CellBinding;
-import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
-import org.apache.isis.viewer.bdd.common.ScenarioCell;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.ThatSubcommandAbstract;
-import org.apache.isis.viewer.bdd.common.parsers.DateParser;
-
-public class Contains extends ThatSubcommandAbstract {
-
-    public Contains() {
-        super("contains", "is", "does contain");
-    }
-
-    @Override
-    public ObjectAdapter that(final PerformContext performContext) throws ScenarioBoundValueException {
-
-        final OneToOneAssociation otoa = (OneToOneAssociation) performContext.getObjectMember();
-
-        // if we have an expected result
-        final CellBinding arg0Binding = performContext.getPeer().getArg0Binding();
-        final ScenarioCell arg0Cell = arg0Binding.getCurrentCell();
-        final String expected = arg0Cell.getText();
-
-        // get
-        final ObjectAdapter resultAdapter = otoa.get(performContext.getOnAdapter());
-
-        // see if matches null
-        if (resultAdapter == null) {
-            if (StringUtils.isNullOrEmpty(expected)) {
-                return resultAdapter;
-            }
-            throw ScenarioBoundValueException.current(arg0Binding, "(is null)");
-        }
-
-        final String resultTitle = resultAdapter.titleString();
-
-        if (!StringUtils.isNullOrEmpty(expected)) {
-
-            // see if expected matches an alias
-            final ObjectAdapter expectedAdapter = performContext.getPeer().getAliasRegistry().getAliased(expected);
-            if (expectedAdapter != null) {
-                // known
-                if (resultAdapter == expectedAdapter) {
-                    return resultAdapter;
-                }
-                throw ScenarioBoundValueException.current(arg0Binding, resultTitle);
-            }
-
-            // otherwise, see if date and if so compare as such
-            final DateValueFacet dateValueFacet = resultAdapter.getSpecification().getFacet(DateValueFacet.class);
-            if (dateValueFacet != null) {
-                final Date resultDate = dateValueFacet.dateValue(resultAdapter);
-
-                final DateParser dateParser = performContext.getDateParser();
-                final Date expectedDate = dateParser.parse(expected);
-                if (expectedDate != null) {
-                    if (expectedDate.compareTo(resultDate) == 0) {
-                        return resultAdapter; // ok
-                    }
-                }
-                final String format = dateParser.format(resultDate);
-                throw ScenarioBoundValueException.current(arg0Binding, format);
-            }
-
-            // otherwise, compare title
-            if (!StringUtils.nullSafeEquals(resultTitle, expected)) {
-                throw ScenarioBoundValueException.current(arg0Binding, resultTitle);
-            }
-        } else {
-            // try to provide a default
-            final String resultAlias = performContext.getPeer().getAliasRegistry().getAlias(resultAdapter);
-            final String resultStr = resultAlias != null ? resultAlias : resultTitle;
-            performContext.getPeer().provideDefault(arg0Cell, resultStr);
-        }
-
-        return resultAdapter;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/property/DoesNotContain.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/property/DoesNotContain.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/property/DoesNotContain.java
deleted file mode 100644
index 9291a7d..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/property/DoesNotContain.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.property;
-
-import org.apache.isis.core.commons.lang.StringUtils;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
-import org.apache.isis.viewer.bdd.common.CellBinding;
-import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
-import org.apache.isis.viewer.bdd.common.ScenarioCell;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.ThatSubcommandAbstract;
-
-public class DoesNotContain extends ThatSubcommandAbstract {
-
-    public DoesNotContain() {
-        super("does not contain", "is not");
-    }
-
-    @Override
-    public ObjectAdapter that(final PerformContext performContext) throws ScenarioBoundValueException {
-
-        final OneToOneAssociation otoa = (OneToOneAssociation) performContext.getObjectMember();
-
-        // if we have an expected result
-        final CellBinding arg0Binding = performContext.getPeer().getArg0Binding();
-        final ScenarioCell arg0Cell = arg0Binding.getCurrentCell();
-        final String expected = arg0Cell.getText();
-
-        // get
-        final ObjectAdapter resultAdapter = otoa.get(performContext.getOnAdapter());
-
-        // see if matches null
-        if (resultAdapter == null) {
-            // ok
-            return null;
-        }
-
-        final String resultTitle = resultAdapter.titleString();
-
-        if (!StringUtils.isNullOrEmpty(expected)) {
-
-            // see if expected matches an alias
-            final ObjectAdapter expectedAdapter = performContext.getPeer().getAliasRegistry().getAliased(expected);
-            if (expectedAdapter != null) {
-                // known
-                if (resultAdapter != expectedAdapter) {
-                    return resultAdapter;
-                }
-                throw ScenarioBoundValueException.current(arg0Binding, "(does contain)");
-            }
-
-            // otherwise, compare title
-            if (StringUtils.nullSafeEquals(resultTitle, expected)) {
-                throw ScenarioBoundValueException.current(arg0Binding, "(does contain)");
-            }
-        }
-
-        return resultAdapter;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/property/Empty.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/property/Empty.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/property/Empty.java
deleted file mode 100644
index b4fdd2b..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/property/Empty.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.property;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
-import org.apache.isis.viewer.bdd.common.CellBinding;
-import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.ThatSubcommandAbstract;
-
-public class Empty extends ThatSubcommandAbstract {
-
-    public Empty() {
-        super("is empty");
-    }
-
-    @Override
-    public ObjectAdapter that(final PerformContext performContext) throws ScenarioBoundValueException {
-
-        final OneToOneAssociation otoa = (OneToOneAssociation) performContext.getObjectMember();
-
-        // get
-        final ObjectAdapter resultAdapter = otoa.get(performContext.getOnAdapter());
-
-        if (resultAdapter != null) {
-            String actualStr = performContext.getPeer().getAliasRegistry().getAlias(resultAdapter);
-            if (actualStr == null) {
-                actualStr = resultAdapter.titleString();
-            }
-            final CellBinding thatItBinding = performContext.getPeer().getThatItBinding();
-            throw ScenarioBoundValueException.current(thatItBinding, actualStr);
-        }
-
-        return null;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/property/NotEmpty.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/property/NotEmpty.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/property/NotEmpty.java
deleted file mode 100644
index c04153f..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/property/NotEmpty.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.property;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
-import org.apache.isis.viewer.bdd.common.CellBinding;
-import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.ThatSubcommandAbstract;
-
-public class NotEmpty extends ThatSubcommandAbstract {
-
-    public NotEmpty() {
-        super("is not empty");
-    }
-
-    @Override
-    public ObjectAdapter that(final PerformContext performContext) throws ScenarioBoundValueException {
-
-        final OneToOneAssociation otoa = (OneToOneAssociation) performContext.getObjectMember();
-
-        // get
-        final ObjectAdapter resultAdapter = otoa.get(performContext.getOnAdapter());
-
-        if (resultAdapter == null) {
-            final CellBinding thatItBinding = performContext.getPeer().getThatItBinding();
-            throw ScenarioBoundValueException.current(thatItBinding, "(empty)");
-        }
-
-        return null;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/property/ProposedClear.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/property/ProposedClear.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/property/ProposedClear.java
deleted file mode 100644
index 3befe79..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/property/ProposedClear.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.property;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.consent.Consent;
-import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
-import org.apache.isis.viewer.bdd.common.CellBinding;
-import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.AssertsValidity;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.ThatValidityAbstract;
-
-public class ProposedClear extends ThatValidityAbstract {
-
-    public ProposedClear(final AssertsValidity assertion) {
-        super(assertion);
-    }
-
-    @Override
-    public ObjectAdapter that(final PerformContext performContext) throws ScenarioBoundValueException {
-
-        final ObjectAdapter onAdapter = performContext.getOnAdapter();
-        final OneToOneAssociation otoa = (OneToOneAssociation) performContext.getObjectMember();
-
-        final Consent validityConsent = otoa.isAssociationValid(onAdapter, null);
-
-        if (!getAssertion().satisfiedBy(validityConsent)) {
-            final CellBinding thatBinding = performContext.getPeer().getThatItBinding();
-            throw ScenarioBoundValueException.current(thatBinding, getAssertion().getReason(validityConsent));
-        }
-
-        // can only return null.
-        return null;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/property/ProposedSet.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/property/ProposedSet.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/property/ProposedSet.java
deleted file mode 100644
index 8c017cf..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/property/ProposedSet.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.property;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.consent.Consent;
-import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.AssertsValidity;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.ProposedArgumentValidityAbstract;
-
-public class ProposedSet extends ProposedArgumentValidityAbstract {
-
-    public ProposedSet(final AssertsValidity assertion) {
-        super(assertion);
-    }
-
-    @Override
-    protected Consent determineConsent(final PerformContext performContext, final ObjectAdapter toValidateAdapter) {
-
-        final ObjectAdapter onAdapter = performContext.getOnAdapter();
-        final OneToOneAssociation otoa = (OneToOneAssociation) performContext.getObjectMember();
-
-        return otoa.isAssociationValid(onAdapter, toValidateAdapter);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/parsers/DateParser.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/parsers/DateParser.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/parsers/DateParser.java
deleted file mode 100644
index b32fe3b..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/parsers/DateParser.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.parsers;
-
-import java.text.DateFormat;
-import java.text.MessageFormat;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.TimeZone;
-
-/**
- * A mutable wrapper around a {@link DateFormat}, allowing the date and time
- * parts of the format to be specified independently specified.
- */
-public class DateParser {
-
-    /**
-     * Taken from the {@link org.apache.isis.applib.value.Date}
-     */
-    private static final TimeZone UTC_TIME_ZONE;
-    static {
-        TimeZone timeZone = TimeZone.getTimeZone("Etc/UTC");
-        if (timeZone == null) {
-            timeZone = TimeZone.getTimeZone("UTC");
-        }
-        UTC_TIME_ZONE = timeZone;
-    }
-
-    private static final String DEFAULT_DATE_MASK = "yyyy-MM-dd";
-    private static final String DEFAULT_TIME_MASK = "hh:mm";
-
-    private String dateMask = DEFAULT_DATE_MASK;
-    private String timeMask = DEFAULT_TIME_MASK;
-    private DateFormat dateAndTimeFormat = null;
-    private DateFormat dateOnlyFormat = null;
-    private DateFormat timeOnlyFormat = null;
-
-    public DateParser() {
-    }
-
-    public Date parse(final String dateAndOrTimeStr) {
-        try {
-            return getDateAndTimeFormat().parse(dateAndOrTimeStr);
-        } catch (final ParseException e) {
-            try {
-                return getDateFormat().parse(dateAndOrTimeStr);
-            } catch (final ParseException e2) {
-                try {
-                    return getTimeFormat().parse(dateAndOrTimeStr);
-                } catch (final ParseException e3) {
-                    return null;
-                }
-            }
-        }
-    }
-
-    public void setDateFormat(final String dateMask) {
-        this.dateMask = dateMask;
-        invalidateFormats();
-    }
-
-    public void setTimeFormat(final String timeMask) {
-        this.timeMask = timeMask;
-        invalidateFormats();
-    }
-
-    private void invalidateFormats() {
-        this.dateAndTimeFormat = null;
-        this.dateOnlyFormat = null;
-        this.timeOnlyFormat = null;
-    }
-
-    public String format(final Date resultDate) {
-        return getDateAndTimeFormat().format(resultDate);
-    }
-
-    private DateFormat getDateAndTimeFormat() {
-        if (dateAndTimeFormat == null) {
-            dateAndTimeFormat = getUTCDateFormat(getCombinedMask());
-        }
-        return dateAndTimeFormat;
-    }
-
-    private DateFormat getTimeFormat() {
-        if (timeOnlyFormat == null) {
-            timeOnlyFormat = getUTCDateFormat(timeMask);
-        }
-        return timeOnlyFormat;
-    }
-
-    private DateFormat getDateFormat() {
-        if (dateOnlyFormat == null) {
-            dateOnlyFormat = getUTCDateFormat(dateMask);
-        }
-        return dateOnlyFormat;
-    }
-
-    private DateFormat getUTCDateFormat(final String dateTimeMask) {
-        final DateFormat dateFormat = new SimpleDateFormat(dateTimeMask);
-        dateFormat.setTimeZone(UTC_TIME_ZONE);
-        return dateFormat;
-    }
-
-    public String getCombinedMask() {
-        return MessageFormat.format("{0} {1}", dateMask, timeMask);
-    }
-
-    @Override
-    public String toString() {
-        return getCombinedMask();
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/AbstractHelper.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/AbstractHelper.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/AbstractHelper.java
deleted file mode 100644
index c994859..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/AbstractHelper.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.story.bootstrapping;
-
-import org.apache.isis.viewer.bdd.common.Scenario;
-
-public abstract class AbstractHelper {
-
-    private final Scenario story;
-
-    public AbstractHelper(final Scenario story) {
-        this.story = story;
-    }
-
-    protected Scenario getStory() {
-        return story;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/OpenSession.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/OpenSession.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/OpenSession.java
deleted file mode 100644
index a36de30..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/OpenSession.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.story.bootstrapping;
-
-import java.util.List;
-
-import org.apache.isis.applib.fixtures.LogonFixture;
-import org.apache.isis.core.commons.authentication.AuthenticationSession;
-import org.apache.isis.core.runtime.authentication.AuthenticationManager;
-import org.apache.isis.core.runtime.fixtures.authentication.AuthenticationRequestLogonFixture;
-import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.viewer.bdd.common.Scenario;
-
-public class OpenSession {
-
-    @SuppressWarnings("unused")
-    private final Scenario story;
-
-    public OpenSession(final Scenario story) {
-        this.story = story;
-    }
-
-    public void openSession(final String userName, final List<String> roles) {
-        IsisContext.closeSession();
-        final LogonFixture logonFixture = new LogonFixture(userName, roles);
-        final AuthenticationRequestLogonFixture authRequest = new AuthenticationRequestLogonFixture(logonFixture);
-        final AuthenticationSession authSession = getAuthenticationManager().authenticate(authRequest);
-
-        IsisContext.openSession(authSession);
-    }
-
-    protected AuthenticationManager getAuthenticationManager() {
-        return IsisContext.getAuthenticationManager();
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/RunViewer.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/RunViewer.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/RunViewer.java
deleted file mode 100644
index 185a206..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/RunViewer.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.story.bootstrapping;
-
-import org.apache.isis.core.runtime.installerregistry.InstallerLookup;
-import org.apache.isis.core.runtime.installerregistry.installerapi.IsisViewerInstaller;
-import org.apache.isis.core.runtime.viewer.IsisViewer;
-import org.apache.isis.viewer.bdd.common.Scenario;
-
-public class RunViewer extends AbstractHelper {
-
-    private static final String DND_VIEWER_NAME = "dnd";
-
-    public RunViewer(final Scenario story) {
-        super(story);
-    }
-
-    public void run() {
-        final InstallerLookup installerLookup = getStory().getInstallerLookup();
-
-        final IsisViewerInstaller viewerInstaller = installerLookup.viewerInstaller(DND_VIEWER_NAME);
-        final IsisViewer viewer = viewerInstaller.createViewer();
-
-        viewer.init();
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/SetClock.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/SetClock.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/SetClock.java
deleted file mode 100644
index 32b980b..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/SetClock.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.story.bootstrapping;
-
-import java.util.Calendar;
-import java.util.Date;
-
-import org.apache.isis.applib.fixtures.FixtureClock;
-import org.apache.isis.viewer.bdd.common.Scenario;
-
-public class SetClock extends AbstractHelper {
-
-    public SetClock(final Scenario story) {
-        super(story);
-    }
-
-    public void setClock(final Date date) {
-        final FixtureClock clock = FixtureClock.initialize();
-        final Calendar calendar = Calendar.getInstance();
-        calendar.setTime(date);
-        clock.setDate(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH) + 1, calendar.get(Calendar.DAY_OF_MONTH));
-        clock.setTime(calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE));
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/ShutdownIsis.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/ShutdownIsis.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/ShutdownIsis.java
deleted file mode 100644
index dac6e66..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/ShutdownIsis.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.story.bootstrapping;
-
-import org.apache.isis.core.runtime.system.IsisSystem;
-import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.viewer.bdd.common.Scenario;
-
-public class ShutdownIsis extends AbstractHelper {
-
-    public ShutdownIsis(final Scenario story) {
-        super(story);
-    }
-
-    public void shutdown() {
-        final IsisSystem system = getStory().getSystem();
-
-        IsisContext.closeAllSessions();
-
-        if (system != null) {
-            system.shutdown();
-        }
-
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/registries/AliasRegistryDefault.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/registries/AliasRegistryDefault.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/registries/AliasRegistryDefault.java
deleted file mode 100644
index 12f3ed6..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/registries/AliasRegistryDefault.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.story.registries;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-import java.util.TreeMap;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
-import org.apache.isis.viewer.bdd.common.AliasRegistry;
-import org.apache.isis.viewer.bdd.common.ScenarioValueException;
-
-public class AliasRegistryDefault implements AliasRegistry {
-
-    private final Map<String, ObjectAdapter> adaptersByAlias = new HashMap<String, ObjectAdapter>();
-    private final Map<ObjectAdapter, String> aliasesByAdapter = new HashMap<ObjectAdapter, String>();
-
-    /**
-     * @see #nextAlias()
-     * @see #aliasPrefixedAs(String, NakedObject)
-     */
-    private final Map<String, int[]> aliasCountsByPrefix = new TreeMap<String, int[]>();
-
-    @Override
-    public void aliasAs(final String alias, final ObjectAdapter adapter) {
-        adaptersByAlias.put(alias, adapter);
-        aliasesByAdapter.put(adapter, alias);
-    }
-
-    @Override
-    public ObjectAdapter getAliased(final String alias) {
-        return adaptersByAlias.get(alias);
-    }
-
-    @Override
-    public String getAlias(final ObjectAdapter adapter) {
-        return aliasesByAdapter.get(adapter);
-    }
-
-    @Override
-    public String aliasPrefixedAs(final String prefix, final ObjectAdapter adapter) {
-        int[] aliasCountForPrefix = aliasCountsByPrefix.get(prefix);
-        if (aliasCountForPrefix == null) {
-            aliasCountForPrefix = new int[1];
-            aliasCountsByPrefix.put(prefix, aliasCountForPrefix);
-        }
-        final String nextAliasForPrefix = nextAlias(prefix, aliasCountForPrefix);
-        adaptersByAlias.put(nextAliasForPrefix, adapter);
-        return nextAliasForPrefix;
-    }
-
-    private String nextAlias(final String prefix, final int[] heldAsCount) {
-        return prefix + "#" + (++heldAsCount[0]);
-    }
-
-    @Override
-    public Iterator<Entry<String, ObjectAdapter>> iterator() {
-        final Set<Entry<String, ObjectAdapter>> entrySet = adaptersByAlias.entrySet();
-        return Collections.unmodifiableSet(entrySet).iterator();
-    }
-
-    @Override
-    public void aliasService(final String aliasAs, final String className) throws ScenarioValueException {
-        final List<ObjectAdapter> serviceAdapters = getPersistenceSession().getServices();
-        for (final ObjectAdapter serviceAdapter : serviceAdapters) {
-            if (serviceAdapter.getSpecification().getFullIdentifier().equals(className)) {
-                adaptersByAlias.put(aliasAs, serviceAdapter);
-                return;
-            }
-        }
-        throw new ScenarioValueException("no such service");
-    }
-
-    protected PersistenceSession getPersistenceSession() {
-        return IsisContext.getPersistenceSession();
-    }
-
-    @Override
-    public void clear() {
-        this.adaptersByAlias.clear();
-        this.aliasesByAdapter.clear();
-        this.aliasCountsByPrefix.clear();
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/registries/AliasRegistryHolder.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/registries/AliasRegistryHolder.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/registries/AliasRegistryHolder.java
deleted file mode 100644
index 1bbc75c..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/registries/AliasRegistryHolder.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.story.registries;
-
-import org.apache.isis.viewer.bdd.common.AliasRegistry;
-
-public interface AliasRegistryHolder {
-
-    AliasRegistry getAliasRegistry();
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/registries/ServiceRegistrySpi.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/registries/ServiceRegistrySpi.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/registries/ServiceRegistrySpi.java
deleted file mode 100644
index 25dff70..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/registries/ServiceRegistrySpi.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.story.registries;
-
-import org.apache.isis.viewer.bdd.common.ServiceRegistry;
-
-public interface ServiceRegistrySpi extends ServiceRegistry {
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/util/Strings.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/util/Strings.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/util/Strings.java
deleted file mode 100644
index c3950c7..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/util/Strings.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.util;
-
-public final class Strings {
-
-    private Strings() {
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/site/apt/index.apt
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/site/apt/index.apt b/component/viewer/bdd/common/src/site/apt/index.apt
deleted file mode 100644
index 1fa9d22..0000000
--- a/component/viewer/bdd/common/src/site/apt/index.apt
+++ /dev/null
@@ -1,32 +0,0 @@
-~~  Licensed to the Apache Software Foundation (ASF) under one
-~~  or more contributor license agreements.  See the NOTICE file
-~~  distributed with this work for additional information
-~~  regarding copyright ownership.  The ASF licenses this file
-~~  to you under the Apache License, Version 2.0 (the
-~~  "License"); you may not use this file except in compliance
-~~  with the License.  You may obtain a copy of the License at
-~~
-~~        http://www.apache.org/licenses/LICENSE-2.0
-~~
-~~  Unless required by applicable law or agreed to in writing,
-~~  software distributed under the License is distributed on an
-~~  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-~~  KIND, either express or implied.  See the License for the
-~~  specific language governing permissions and limitations
-~~  under the License.
-
-
-
-BDD Common
-
- The BDD <common> module provides integration logic with <Apache Isis>, 
- independent of any particular BDD testing framework.   Although
- the {{{../bdd-concordion/index.html}concordion}} module is the only user,
- it is separate from that module in order to enable integrations with other 
- BDD frameworks in the future.
-    
-Further Info
-  
-  See this module's {{{./apidocs/index.html}Javadoc}} and the 
-  {{{../docbkx/html/guide/isis-bdd-integration.html}user guide}} for more information.
- 

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/site/apt/jottings.apt
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/site/apt/jottings.apt b/component/viewer/bdd/common/src/site/apt/jottings.apt
deleted file mode 100644
index c5d1200..0000000
--- a/component/viewer/bdd/common/src/site/apt/jottings.apt
+++ /dev/null
@@ -1,24 +0,0 @@
-~~  Licensed to the Apache Software Foundation (ASF) under one
-~~  or more contributor license agreements.  See the NOTICE file
-~~  distributed with this work for additional information
-~~  regarding copyright ownership.  The ASF licenses this file
-~~  to you under the Apache License, Version 2.0 (the
-~~  "License"); you may not use this file except in compliance
-~~  with the License.  You may obtain a copy of the License at
-~~
-~~        http://www.apache.org/licenses/LICENSE-2.0
-~~
-~~  Unless required by applicable law or agreed to in writing,
-~~  software distributed under the License is distributed on an
-~~  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-~~  KIND, either express or implied.  See the License for the
-~~  specific language governing permissions and limitations
-~~  under the License.
-
-
-
-Jottings
- 
-  This page is to capture any random jottings relating to this module prior 
-  to being moved into formal documentation. 
- 

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/site/site.xml
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/site/site.xml b/component/viewer/bdd/common/src/site/site.xml
deleted file mode 100644
index aaffb84..0000000
--- a/component/viewer/bdd/common/src/site/site.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-         http://www.apache.org/licenses/LICENSE-2.0
-         
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-<project>
-
-	<body>
-		<breadcrumbs>
-			<item name="Common" href="index.html"/>
-		</breadcrumbs>
-
-		<menu name="BDD Common">
-			<item name="About" href="index.html" />
-            <item name="Jottings" href="jottings.html" />
-		</menu>
-        
-        <menu name="BDD Modules">
-            <item name="Common" href="../bdd-common/index.html" />
-            <item name="Concordion" href="../bdd-concordion/index.html" />
-        </menu>
-
-		<menu name="Maven Reports" ref="reports" />
-	</body>
-
-</project>

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/test/java/org/apache/isis/viewer/bdd/common/parsers/DateParserTest.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/test/java/org/apache/isis/viewer/bdd/common/parsers/DateParserTest.java b/component/viewer/bdd/common/src/test/java/org/apache/isis/viewer/bdd/common/parsers/DateParserTest.java
deleted file mode 100644
index 2ef1307..0000000
--- a/component/viewer/bdd/common/src/test/java/org/apache/isis/viewer/bdd/common/parsers/DateParserTest.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.parsers;
-
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.not;
-import static org.hamcrest.Matchers.nullValue;
-import static org.junit.Assert.assertThat;
-
-import java.util.Date;
-
-import org.junit.Ignore;
-import org.junit.Test;
-
-public class DateParserTest {
-
-    /**
-     * Tracking down problem in ISIS-18...
-     * <p>
-     * This fails because 'MMM' is gonna be different in different languages.
-     */
-    @Ignore
-    @Test
-    public void parsesUnder_enUK_butNotUnder_deDE() throws Exception {
-        final DateParser dateParser = new DateParser();
-        dateParser.setDateFormat("dd-MMM-yyyy");
-        dateParser.setTimeFormat("hh:mm");
-        final Date parse = dateParser.parse("02-May-2010 09:20");
-        assertThat(parse, is(not(nullValue())));
-    }
-
-}


[19/19] git commit: ISIS-463: mothballing BDD viewer

Posted by da...@apache.org.
ISIS-463: mothballing BDD viewer


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/7276dc0b
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/7276dc0b
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/7276dc0b

Branch: refs/heads/master
Commit: 7276dc0b563dc18723174a43e0399ed8eb5d183e
Parents: 78edef5
Author: Dan Haywood <da...@apache.org>
Authored: Fri Jul 12 08:08:01 2013 +0100
Committer: Dan Haywood <da...@apache.org>
Committed: Fri Jul 12 08:08:01 2013 +0100

----------------------------------------------------------------------
 component/viewer/bdd/NOTICE                     |    7 -
 component/viewer/bdd/common/pom.xml             |   63 -
 .../isis/viewer/bdd/common/AliasRegistry.java   |   46 -
 .../isis/viewer/bdd/common/CellBinding.java     |  230 -
 .../viewer/bdd/common/CellBindingDefault.java   |   68 -
 .../viewer/bdd/common/IsisViewerConstants.java  |   82 -
 .../apache/isis/viewer/bdd/common/Scenario.java |  312 --
 .../bdd/common/ScenarioBoundValueException.java |   59 -
 .../isis/viewer/bdd/common/ScenarioCell.java    |   38 -
 .../viewer/bdd/common/ScenarioCellDefault.java  |   51 -
 .../bdd/common/ScenarioValueException.java      |   40 -
 .../isis/viewer/bdd/common/ServiceRegistry.java |   23 -
 .../BddAuthenticationManagerInstaller.java      |   40 -
 ...ddInMemoryPersistenceMechanismInstaller.java |   48 -
 .../BddInMemoryPersistenceSessionFactory.java   |   47 -
 .../BddObjectStorePersistedObjects.java         |  124 -
 .../IsisSystemUsingInstallersWithinStory.java   |   44 -
 .../common/fixtures/AbstractFixturePeer.java    |   88 -
 .../fixtures/AbstractListFixturePeer.java       |   87 -
 .../fixtures/AbstractSetUpFixturePeer.java      |   30 -
 .../common/fixtures/AliasItemsInListPeer.java   |  105 -
 .../fixtures/CheckCollectionContentsPeer.java   |  119 -
 .../bdd/common/fixtures/CheckListConstants.java |   30 -
 .../bdd/common/fixtures/CheckListPeer.java      |  148 -
 .../bdd/common/fixtures/DebugClockPeer.java     |   49 -
 .../common/fixtures/DebugObjectStorePeer.java   |   39 -
 .../bdd/common/fixtures/DebugServicesPeer.java  |   45 -
 .../bdd/common/fixtures/SetUpObjectsPeer.java   |  305 --
 .../common/fixtures/UsingIsisViewerPeer.java    |  386 --
 .../fixtures/perform/AddToCollection.java       |   79 -
 .../common/fixtures/perform/CheckAction.java    |   35 -
 .../fixtures/perform/CheckAddToCollection.java  |   31 -
 .../fixtures/perform/CheckClearProperty.java    |   31 -
 .../fixtures/perform/CheckCollection.java       |   37 -
 .../common/fixtures/perform/CheckObject.java    |   33 -
 .../common/fixtures/perform/CheckProperty.java  |   37 -
 .../perform/CheckRemoveFromCollection.java      |   31 -
 .../fixtures/perform/CheckSetProperty.java      |   31 -
 .../common/fixtures/perform/ClearProperty.java  |   67 -
 .../perform/GetActionParameterChoices.java      |   66 -
 .../perform/GetActionParameterDefault.java      |   65 -
 .../common/fixtures/perform/GetCollection.java  |   49 -
 .../common/fixtures/perform/GetProperty.java    |   49 -
 .../fixtures/perform/GetPropertyChoices.java    |   49 -
 .../fixtures/perform/GetPropertyDefault.java    |   52 -
 .../common/fixtures/perform/InvokeAction.java   |   78 -
 .../bdd/common/fixtures/perform/Perform.java    |   37 -
 .../fixtures/perform/PerformAbstract.java       |   47 -
 .../perform/PerformAbstractTypeParams.java      |  188 -
 .../common/fixtures/perform/PerformContext.java |  128 -
 .../common/fixtures/perform/PerformOwner.java   |   23 -
 .../fixtures/perform/RemoveFromCollection.java  |   86 -
 .../bdd/common/fixtures/perform/SaveObject.java |   71 -
 .../common/fixtures/perform/SetProperty.java    |   79 -
 .../perform/checkthat/AssertsContainment.java   |   53 -
 .../perform/checkthat/AssertsEmpty.java         |   53 -
 .../perform/checkthat/AssertsValidity.java      |   70 -
 .../fixtures/perform/checkthat/Disabled.java    |   44 -
 .../fixtures/perform/checkthat/Hidden.java      |   43 -
 .../checkthat/PerformCheckThatAbstract.java     |   78 -
 .../ProposedArgumentValidityAbstract.java       |   65 -
 .../perform/checkthat/ThatSubcommand.java       |   36 -
 .../checkthat/ThatSubcommandAbstract.java       |   53 -
 .../perform/checkthat/ThatValidityAbstract.java |   34 -
 .../fixtures/perform/checkthat/Usable.java      |   43 -
 .../fixtures/perform/checkthat/Visible.java     |   43 -
 .../checkthat/action/ArgumentSetNotValid.java   |   70 -
 .../checkthat/action/ArgumentSetValid.java      |   69 -
 .../checkthat/collections/Containment.java      |   67 -
 .../checkthat/collections/Emptiness.java        |   51 -
 .../checkthat/collections/ProposedAddTo.java    |   43 -
 .../collections/ProposedRemoveFrom.java         |   43 -
 .../perform/checkthat/collections/Size.java     |   69 -
 .../checkthat/collections/ThatAbstract.java     |   50 -
 .../perform/checkthat/object/NotSaved.java      |   46 -
 .../perform/checkthat/object/NotValid.java      |   45 -
 .../perform/checkthat/object/Saved.java         |   46 -
 .../perform/checkthat/object/Valid.java         |   44 -
 .../perform/checkthat/property/Contains.java    |  105 -
 .../checkthat/property/DoesNotContain.java      |   78 -
 .../perform/checkthat/property/Empty.java       |   54 -
 .../perform/checkthat/property/NotEmpty.java    |   50 -
 .../checkthat/property/ProposedClear.java       |   53 -
 .../perform/checkthat/property/ProposedSet.java |   43 -
 .../viewer/bdd/common/parsers/DateParser.java   |  130 -
 .../story/bootstrapping/AbstractHelper.java     |   35 -
 .../common/story/bootstrapping/OpenSession.java |   52 -
 .../common/story/bootstrapping/RunViewer.java   |   43 -
 .../common/story/bootstrapping/SetClock.java    |   41 -
 .../story/bootstrapping/ShutdownIsis.java       |   42 -
 .../story/registries/AliasRegistryDefault.java  |  108 -
 .../story/registries/AliasRegistryHolder.java   |   27 -
 .../story/registries/ServiceRegistrySpi.java    |   25 -
 .../isis/viewer/bdd/common/util/Strings.java    |   26 -
 .../viewer/bdd/common/src/site/apt/index.apt    |   32 -
 .../viewer/bdd/common/src/site/apt/jottings.apt |   24 -
 component/viewer/bdd/common/src/site/site.xml   |   40 -
 .../bdd/common/parsers/DateParserTest.java      |   48 -
 .../common/registries/AliasesRegistryTest.java  |   75 -
 component/viewer/bdd/concordion/pom.xml         |   83 -
 .../AbstractIsisConcordionScenario.java         |  539 ---
 .../IsisExecuteCommandWithHeader.java           |  119 -
 .../internal/fixtures/AbstractFixture.java      |   33 -
 .../fixtures/AliasItemsInListForConcordion.java |   97 -
 .../CheckCollectionContentsForConcordion.java   |   61 -
 .../fixtures/CheckListForConcordion.java        |   72 -
 .../fixtures/SetUpObjectsForConcordion.java     |   72 -
 .../fixtures/UsingIsisViewerForConcordion.java  |  127 -
 .../bdd/concordion/src/site/apt/index.apt       |   29 -
 .../bdd/concordion/src/site/apt/jottings.apt    |   24 -
 .../viewer/bdd/concordion/src/site/site.xml     |   40 -
 component/viewer/bdd/pom.xml                    |  200 -
 .../images/xmlmind-concordion-attributes-1.png  |  Bin 94125 -> 0 bytes
 .../images/xmlmind-concordion-attributes-2.png  |  Bin 100051 -> 0 bytes
 .../bdd/src/docbkx/guide/images/xmlmind-css.png |  Bin 26732 -> 0 bytes
 .../src/docbkx/guide/images/xmlmind-delete.png  |  Bin 21281 -> 0 bytes
 .../docbkx/guide/images/xmlmind-editinsert.png  |  Bin 101027 -> 0 bytes
 .../guide/images/xmlmind-editwrap-result.png    |  Bin 1938 -> 0 bytes
 .../docbkx/guide/images/xmlmind-editwrap.png    |  Bin 93437 -> 0 bytes
 .../docbkx/guide/images/xmlmind-emptytable.png  |  Bin 2818 -> 0 bytes
 .../src/docbkx/guide/images/xmlmind-headrow.png |  Bin 105348 -> 0 bytes
 .../src/docbkx/guide/images/xmlmind-image-1.png |  Bin 96114 -> 0 bytes
 .../src/docbkx/guide/images/xmlmind-image-2.png |  Bin 100431 -> 0 bytes
 .../guide/images/xmlmind-insert-heading.png     |  Bin 102948 -> 0 bytes
 .../src/docbkx/guide/images/xmlmind-insert.png  |  Bin 102834 -> 0 bytes
 .../guide/images/xmlmind-knowingwhereyouare.png |  Bin 98110 -> 0 bytes
 .../docbkx/guide/images/xmlmind-newparas.png    |  Bin 94121 -> 0 bytes
 .../src/docbkx/guide/images/xmlmind-opendoc.png |  Bin 80742 -> 0 bytes
 .../guide/images/xmlmind-selectingcontent-1.png |  Bin 97606 -> 0 bytes
 .../guide/images/xmlmind-selectingcontent-2.png |  Bin 98277 -> 0 bytes
 .../docbkx/guide/images/xmlmind-viewleft.png    |  Bin 96013 -> 0 bytes
 .../src/docbkx/guide/images/xmlmind-viewraw.png |  Bin 13734 -> 0 bytes
 .../docbkx/guide/images/xmlmind-xhtmlmenu.png   |  Bin 13700 -> 0 bytes
 .../src/docbkx/guide/isis-bdd-integration.xml   | 4170 ------------------
 .../appended-resources/supplemental-models.xml  |  106 -
 component/viewer/bdd/src/site/apt/index.apt     |   52 -
 component/viewer/bdd/src/site/apt/jottings.apt  |   24 -
 .../bdd/src/site/resources/dtd/xhtml-lat1.ent   |  196 -
 .../src/site/resources/dtd/xhtml-special.ent    |   80 -
 .../bdd/src/site/resources/dtd/xhtml-symbol.ent |  237 -
 .../src/site/resources/dtd/xhtml1-strict.dtd    |  988 -----
 .../bdd/src/site/resources/xmlmind/xhtml.css    |  692 ---
 .../site/resources/xmlmind/xhtml1-strict.dtd    |  988 -----
 component/viewer/bdd/src/site/site.xml          |   55 -
 component/viewer/bdd/tck/pom.xml                |  113 -
 .../viewer/bdd/AbstractApplicationStory.java    |   34 -
 .../bdd/common/BootstrapInExplorationMode.java  |   25 -
 .../test/java/viewer/bdd/common/ToDoItems.java  |   25 -
 .../java/viewer/bdd/stories/AllStories.java     |   25 -
 .../java/viewer/bdd/stories/todo/Fixtures.java  |   25 -
 .../java/viewer/bdd/stories/todo/Index.java     |   25 -
 .../stories/todo/ScenarioMarkItemAsDone.java    |   25 -
 .../tck/src/test/resources/dtd/xhtml-lat1.ent   |  196 -
 .../src/test/resources/dtd/xhtml-special.ent    |   80 -
 .../tck/src/test/resources/dtd/xhtml-symbol.ent |  237 -
 .../src/test/resources/dtd/xhtml1-strict.dtd    |  980 ----
 .../bdd/common/BootstrapInExplorationMode.html  |   56 -
 .../resources/viewer/bdd/common/ToDoItems.html  |   68 -
 .../test/resources/viewer/bdd/concordion.css    |  102 -
 .../viewer/bdd/stories/AllStories.html          |   37 -
 .../viewer/bdd/stories/todo/Fixtures.html       |   55 -
 .../viewer/bdd/stories/todo/Index.html          |   39 -
 .../stories/todo/ScenarioMarkItemAsDone.html    |  163 -
 .../dom/log4j.properties                        |   24 -
 .../quickstart_dnd_junit_bdd/dom/pom.xml        |   39 -
 .../dom/src/main/java/dom/todo/ToDoItem.java    |  228 -
 .../dom/src/main/java/dom/todo/ToDoItems.java   |  139 -
 .../dom/src/main/resources/images/ToDoItem.gif  |  Bin 1592 -> 0 bytes
 .../quickstart_dnd_junit_bdd/fixture/pom.xml    |   39 -
 .../main/java/fixture/LogonAsSvenFixture.java   |   30 -
 .../java/fixture/todo/ToDoItemsFixture.java     |   74 -
 .../fixture/todo/ToDoItemsFixturesService.java  |   46 -
 .../quickstart_dnd_junit_bdd/pom.xml            |  266 --
 .../quickstart_dnd_junit_bdd/tests-bdd/pom.xml  |   99 -
 .../viewer/bdd/AbstractApplicationStory.java    |   34 -
 .../bdd/common/BootstrapInPrototypeMode.java    |   25 -
 .../test/java/viewer/bdd/common/ToDoItems.java  |   25 -
 .../java/viewer/bdd/stories/AllStories.java     |   25 -
 .../java/viewer/bdd/stories/todo/Fixtures.java  |   25 -
 .../java/viewer/bdd/stories/todo/Index.java     |   25 -
 .../stories/todo/ScenarioMarkItemAsDone.java    |   25 -
 .../src/test/resources/dtd/xhtml-lat1.ent       |  196 -
 .../src/test/resources/dtd/xhtml-special.ent    |   80 -
 .../src/test/resources/dtd/xhtml-symbol.ent     |  237 -
 .../src/test/resources/dtd/xhtml1-strict.dtd    |  980 ----
 .../bdd/common/BootstrapInPrototypeMode.html    |   56 -
 .../resources/viewer/bdd/common/ToDoItems.html  |   74 -
 .../test/resources/viewer/bdd/concordion.css    |  102 -
 .../viewer/bdd/stories/AllStories.html          |   37 -
 .../viewer/bdd/stories/todo/Fixtures.html       |   55 -
 .../viewer/bdd/stories/todo/Index.html          |   39 -
 .../stories/todo/ScenarioMarkItemAsDone.html    |  163 -
 .../viewer-dnd/config/isis.properties           |  116 -
 .../viewer-dnd/config/logging.properties        |   34 -
 .../config/persistor_in-memory.properties       |   25 -
 .../viewer-dnd/config/persistor_xml.properties  |   22 -
 .../viewer-dnd/config/viewer_dnd.properties     |   22 -
 .../quickstart_dnd_junit_bdd-viewer-dnd.launch  |   20 -
 .../quickstart_dnd_junit_bdd/viewer-dnd/pom.xml |  160 -
 mothballed/bdd/NOTICE                           |    7 +
 mothballed/bdd/common/pom.xml                   |   63 +
 .../isis/viewer/bdd/common/AliasRegistry.java   |   46 +
 .../isis/viewer/bdd/common/CellBinding.java     |  230 +
 .../viewer/bdd/common/CellBindingDefault.java   |   68 +
 .../viewer/bdd/common/IsisViewerConstants.java  |   82 +
 .../apache/isis/viewer/bdd/common/Scenario.java |  312 ++
 .../bdd/common/ScenarioBoundValueException.java |   59 +
 .../isis/viewer/bdd/common/ScenarioCell.java    |   38 +
 .../viewer/bdd/common/ScenarioCellDefault.java  |   51 +
 .../bdd/common/ScenarioValueException.java      |   40 +
 .../isis/viewer/bdd/common/ServiceRegistry.java |   23 +
 .../BddAuthenticationManagerInstaller.java      |   40 +
 ...ddInMemoryPersistenceMechanismInstaller.java |   48 +
 .../BddInMemoryPersistenceSessionFactory.java   |   47 +
 .../BddObjectStorePersistedObjects.java         |  124 +
 .../IsisSystemUsingInstallersWithinStory.java   |   44 +
 .../common/fixtures/AbstractFixturePeer.java    |   88 +
 .../fixtures/AbstractListFixturePeer.java       |   87 +
 .../fixtures/AbstractSetUpFixturePeer.java      |   30 +
 .../common/fixtures/AliasItemsInListPeer.java   |  105 +
 .../fixtures/CheckCollectionContentsPeer.java   |  119 +
 .../bdd/common/fixtures/CheckListConstants.java |   30 +
 .../bdd/common/fixtures/CheckListPeer.java      |  148 +
 .../bdd/common/fixtures/DebugClockPeer.java     |   49 +
 .../common/fixtures/DebugObjectStorePeer.java   |   39 +
 .../bdd/common/fixtures/DebugServicesPeer.java  |   45 +
 .../bdd/common/fixtures/SetUpObjectsPeer.java   |  305 ++
 .../common/fixtures/UsingIsisViewerPeer.java    |  386 ++
 .../fixtures/perform/AddToCollection.java       |   79 +
 .../common/fixtures/perform/CheckAction.java    |   35 +
 .../fixtures/perform/CheckAddToCollection.java  |   31 +
 .../fixtures/perform/CheckClearProperty.java    |   31 +
 .../fixtures/perform/CheckCollection.java       |   37 +
 .../common/fixtures/perform/CheckObject.java    |   33 +
 .../common/fixtures/perform/CheckProperty.java  |   37 +
 .../perform/CheckRemoveFromCollection.java      |   31 +
 .../fixtures/perform/CheckSetProperty.java      |   31 +
 .../common/fixtures/perform/ClearProperty.java  |   67 +
 .../perform/GetActionParameterChoices.java      |   66 +
 .../perform/GetActionParameterDefault.java      |   65 +
 .../common/fixtures/perform/GetCollection.java  |   49 +
 .../common/fixtures/perform/GetProperty.java    |   49 +
 .../fixtures/perform/GetPropertyChoices.java    |   49 +
 .../fixtures/perform/GetPropertyDefault.java    |   52 +
 .../common/fixtures/perform/InvokeAction.java   |   78 +
 .../bdd/common/fixtures/perform/Perform.java    |   37 +
 .../fixtures/perform/PerformAbstract.java       |   47 +
 .../perform/PerformAbstractTypeParams.java      |  188 +
 .../common/fixtures/perform/PerformContext.java |  128 +
 .../common/fixtures/perform/PerformOwner.java   |   23 +
 .../fixtures/perform/RemoveFromCollection.java  |   86 +
 .../bdd/common/fixtures/perform/SaveObject.java |   71 +
 .../common/fixtures/perform/SetProperty.java    |   79 +
 .../perform/checkthat/AssertsContainment.java   |   53 +
 .../perform/checkthat/AssertsEmpty.java         |   53 +
 .../perform/checkthat/AssertsValidity.java      |   70 +
 .../fixtures/perform/checkthat/Disabled.java    |   44 +
 .../fixtures/perform/checkthat/Hidden.java      |   43 +
 .../checkthat/PerformCheckThatAbstract.java     |   78 +
 .../ProposedArgumentValidityAbstract.java       |   65 +
 .../perform/checkthat/ThatSubcommand.java       |   36 +
 .../checkthat/ThatSubcommandAbstract.java       |   53 +
 .../perform/checkthat/ThatValidityAbstract.java |   34 +
 .../fixtures/perform/checkthat/Usable.java      |   43 +
 .../fixtures/perform/checkthat/Visible.java     |   43 +
 .../checkthat/action/ArgumentSetNotValid.java   |   70 +
 .../checkthat/action/ArgumentSetValid.java      |   69 +
 .../checkthat/collections/Containment.java      |   67 +
 .../checkthat/collections/Emptiness.java        |   51 +
 .../checkthat/collections/ProposedAddTo.java    |   43 +
 .../collections/ProposedRemoveFrom.java         |   43 +
 .../perform/checkthat/collections/Size.java     |   69 +
 .../checkthat/collections/ThatAbstract.java     |   50 +
 .../perform/checkthat/object/NotSaved.java      |   46 +
 .../perform/checkthat/object/NotValid.java      |   45 +
 .../perform/checkthat/object/Saved.java         |   46 +
 .../perform/checkthat/object/Valid.java         |   44 +
 .../perform/checkthat/property/Contains.java    |  105 +
 .../checkthat/property/DoesNotContain.java      |   78 +
 .../perform/checkthat/property/Empty.java       |   54 +
 .../perform/checkthat/property/NotEmpty.java    |   50 +
 .../checkthat/property/ProposedClear.java       |   53 +
 .../perform/checkthat/property/ProposedSet.java |   43 +
 .../viewer/bdd/common/parsers/DateParser.java   |  130 +
 .../story/bootstrapping/AbstractHelper.java     |   35 +
 .../common/story/bootstrapping/OpenSession.java |   52 +
 .../common/story/bootstrapping/RunViewer.java   |   43 +
 .../common/story/bootstrapping/SetClock.java    |   41 +
 .../story/bootstrapping/ShutdownIsis.java       |   42 +
 .../story/registries/AliasRegistryDefault.java  |  108 +
 .../story/registries/AliasRegistryHolder.java   |   27 +
 .../story/registries/ServiceRegistrySpi.java    |   25 +
 .../isis/viewer/bdd/common/util/Strings.java    |   26 +
 mothballed/bdd/common/src/site/apt/index.apt    |   32 +
 mothballed/bdd/common/src/site/apt/jottings.apt |   24 +
 mothballed/bdd/common/src/site/site.xml         |   40 +
 .../bdd/common/parsers/DateParserTest.java      |   48 +
 .../common/registries/AliasesRegistryTest.java  |   75 +
 mothballed/bdd/concordion/pom.xml               |   83 +
 .../AbstractIsisConcordionScenario.java         |  539 +++
 .../IsisExecuteCommandWithHeader.java           |  119 +
 .../internal/fixtures/AbstractFixture.java      |   33 +
 .../fixtures/AliasItemsInListForConcordion.java |   97 +
 .../CheckCollectionContentsForConcordion.java   |   61 +
 .../fixtures/CheckListForConcordion.java        |   72 +
 .../fixtures/SetUpObjectsForConcordion.java     |   72 +
 .../fixtures/UsingIsisViewerForConcordion.java  |  127 +
 .../bdd/concordion/src/site/apt/index.apt       |   29 +
 .../bdd/concordion/src/site/apt/jottings.apt    |   24 +
 mothballed/bdd/concordion/src/site/site.xml     |   40 +
 mothballed/bdd/pom.xml                          |  200 +
 .../images/xmlmind-concordion-attributes-1.png  |  Bin 0 -> 94125 bytes
 .../images/xmlmind-concordion-attributes-2.png  |  Bin 0 -> 100051 bytes
 .../bdd/src/docbkx/guide/images/xmlmind-css.png |  Bin 0 -> 26732 bytes
 .../src/docbkx/guide/images/xmlmind-delete.png  |  Bin 0 -> 21281 bytes
 .../docbkx/guide/images/xmlmind-editinsert.png  |  Bin 0 -> 101027 bytes
 .../guide/images/xmlmind-editwrap-result.png    |  Bin 0 -> 1938 bytes
 .../docbkx/guide/images/xmlmind-editwrap.png    |  Bin 0 -> 93437 bytes
 .../docbkx/guide/images/xmlmind-emptytable.png  |  Bin 0 -> 2818 bytes
 .../src/docbkx/guide/images/xmlmind-headrow.png |  Bin 0 -> 105348 bytes
 .../src/docbkx/guide/images/xmlmind-image-1.png |  Bin 0 -> 96114 bytes
 .../src/docbkx/guide/images/xmlmind-image-2.png |  Bin 0 -> 100431 bytes
 .../guide/images/xmlmind-insert-heading.png     |  Bin 0 -> 102948 bytes
 .../src/docbkx/guide/images/xmlmind-insert.png  |  Bin 0 -> 102834 bytes
 .../guide/images/xmlmind-knowingwhereyouare.png |  Bin 0 -> 98110 bytes
 .../docbkx/guide/images/xmlmind-newparas.png    |  Bin 0 -> 94121 bytes
 .../src/docbkx/guide/images/xmlmind-opendoc.png |  Bin 0 -> 80742 bytes
 .../guide/images/xmlmind-selectingcontent-1.png |  Bin 0 -> 97606 bytes
 .../guide/images/xmlmind-selectingcontent-2.png |  Bin 0 -> 98277 bytes
 .../docbkx/guide/images/xmlmind-viewleft.png    |  Bin 0 -> 96013 bytes
 .../src/docbkx/guide/images/xmlmind-viewraw.png |  Bin 0 -> 13734 bytes
 .../docbkx/guide/images/xmlmind-xhtmlmenu.png   |  Bin 0 -> 13700 bytes
 .../src/docbkx/guide/isis-bdd-integration.xml   | 4170 ++++++++++++++++++
 .../appended-resources/supplemental-models.xml  |  106 +
 mothballed/bdd/src/site/apt/index.apt           |   52 +
 mothballed/bdd/src/site/apt/jottings.apt        |   24 +
 .../bdd/src/site/resources/dtd/xhtml-lat1.ent   |  196 +
 .../src/site/resources/dtd/xhtml-special.ent    |   80 +
 .../bdd/src/site/resources/dtd/xhtml-symbol.ent |  237 +
 .../src/site/resources/dtd/xhtml1-strict.dtd    |  988 +++++
 .../bdd/src/site/resources/xmlmind/xhtml.css    |  692 +++
 .../site/resources/xmlmind/xhtml1-strict.dtd    |  988 +++++
 mothballed/bdd/src/site/site.xml                |   55 +
 mothballed/bdd/tck/pom.xml                      |  113 +
 .../viewer/bdd/AbstractApplicationStory.java    |   34 +
 .../bdd/common/BootstrapInExplorationMode.java  |   25 +
 .../test/java/viewer/bdd/common/ToDoItems.java  |   25 +
 .../java/viewer/bdd/stories/AllStories.java     |   25 +
 .../java/viewer/bdd/stories/todo/Fixtures.java  |   25 +
 .../java/viewer/bdd/stories/todo/Index.java     |   25 +
 .../stories/todo/ScenarioMarkItemAsDone.java    |   25 +
 .../tck/src/test/resources/dtd/xhtml-lat1.ent   |  196 +
 .../src/test/resources/dtd/xhtml-special.ent    |   80 +
 .../tck/src/test/resources/dtd/xhtml-symbol.ent |  237 +
 .../src/test/resources/dtd/xhtml1-strict.dtd    |  980 ++++
 .../bdd/common/BootstrapInExplorationMode.html  |   56 +
 .../resources/viewer/bdd/common/ToDoItems.html  |   68 +
 .../test/resources/viewer/bdd/concordion.css    |  102 +
 .../viewer/bdd/stories/AllStories.html          |   37 +
 .../viewer/bdd/stories/todo/Fixtures.html       |   55 +
 .../viewer/bdd/stories/todo/Index.html          |   39 +
 .../stories/todo/ScenarioMarkItemAsDone.html    |  163 +
 pom.xml                                         |    2 -
 363 files changed, 18015 insertions(+), 21603 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/NOTICE
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/NOTICE b/component/viewer/bdd/NOTICE
deleted file mode 100644
index ba21d0c..0000000
--- a/component/viewer/bdd/NOTICE
+++ /dev/null
@@ -1,7 +0,0 @@
-Apache Isis
-Copyright 2010-2013 The Apache Software Foundation
-
-This product includes software developed at
-The Apache Software Foundation (http://www.apache.org/).
-
-

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/pom.xml
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/pom.xml b/component/viewer/bdd/common/pom.xml
deleted file mode 100755
index 2b8fcd8..0000000
--- a/component/viewer/bdd/common/pom.xml
+++ /dev/null
@@ -1,63 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-         http://www.apache.org/licenses/LICENSE-2.0
-         
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-
-	<parent>
-	    <groupId>org.apache.isis.viewer</groupId>
-	    <artifactId>isis-viewer-bdd</artifactId>
-	    <version>1.0.0-SNAPSHOT</version>
-	</parent>
-	
-	<artifactId>isis-viewer-bdd-common</artifactId>
-	<name>Isis BDD Viewer (Common)</name>
-
-    <properties>
-		<siteBaseDir>..</siteBaseDir>
-		<relativeUrl>common/</relativeUrl>
-	</properties>
-
-    <!-- used in Site generation for relative references. -->
-    <url>http://isis.apache.org/${relativeUrl}</url>
-
-	<dependencies>
-		<dependency>
-		    <groupId>org.apache.isis.core</groupId>
-		    <artifactId>isis-core-metamodel</artifactId>
-		</dependency>
-		
-		<dependency>
-			<groupId>org.apache.isis.core</groupId>
-			<artifactId>isis-core-runtime</artifactId>
-		</dependency>
-        <dependency>
-            <groupId>org.apache.isis.core</groupId>
-            <artifactId>isis-core-objectstore</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.isis.core</groupId>
-            <artifactId>isis-core-profilestore</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.isis.core</groupId>
-            <artifactId>isis-core-security</artifactId>
-        </dependency>
-	</dependencies>
-</project>      

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/AliasRegistry.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/AliasRegistry.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/AliasRegistry.java
deleted file mode 100644
index a4cfdd8..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/AliasRegistry.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common;
-
-import java.util.Map;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-
-public interface AliasRegistry extends Iterable<Map.Entry<String, ObjectAdapter>> {
-
-    public ObjectAdapter getAliased(final String alias);
-
-    public String getAlias(final ObjectAdapter adapter);
-
-    /**
-     * Holds a new {@link NakedObject adapter}, automatically assigning it a new
-     * heldAs alias.
-     */
-    public String aliasPrefixedAs(final String prefix, final ObjectAdapter adapter);
-
-    /**
-     * Holds a new {@link ObjectAdapter}
-     */
-    public void aliasAs(final String alias, final ObjectAdapter adapter);
-
-    void aliasService(final String aliasAs, final String className) throws ScenarioValueException;
-
-    public void clear();
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/CellBinding.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/CellBinding.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/CellBinding.java
deleted file mode 100644
index 0e7a055..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/CellBinding.java
+++ /dev/null
@@ -1,230 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.isis.core.commons.lang.StringUtils;
-
-public abstract class CellBinding {
-
-    private boolean found = false;
-    private int column = -1;
-
-    private ScenarioCell headCell = null;
-    private ScenarioCell currentCell;
-
-    private final String name;
-    private final List<String> headTexts;
-    private final boolean autoCreate;
-    private final boolean ditto;
-    private final boolean optional;
-
-    // ///////////////////////////////////////////////////////////////
-    // Constructor
-    // ///////////////////////////////////////////////////////////////
-
-    protected CellBinding(final String name, final boolean autoCreate, final boolean ditto, final boolean optional, final String[] headTexts) {
-        this.name = name;
-        this.autoCreate = autoCreate;
-        this.ditto = ditto;
-        this.optional = optional;
-        if (headTexts.length == 0) {
-            throw new IllegalArgumentException("Require at least one heading text");
-        }
-        final List<String> headTextList = new ArrayList<String>();
-        for (final String headText : headTexts) {
-            headTextList.add(StringUtils.camel(headText).toLowerCase());
-        }
-        this.headTexts = headTextList;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public boolean isOptional() {
-        return optional;
-    }
-
-    public boolean isAutoCreate() {
-        return autoCreate;
-    }
-
-    private void ditto(final ScenarioCell previousCell) {
-        copy(previousCell, getCurrentCell());
-    }
-
-    public List<String> getHeadTexts() {
-        return headTexts;
-    }
-
-    public boolean isDitto() {
-        return ditto;
-    }
-
-    // ///////////////////////////////////////////////////////////////
-    // matches (for searching head column)
-    // ///////////////////////////////////////////////////////////////
-
-    /**
-     * For the BDD framework integration to search whether this particular
-     * {@link CellBinding} corresponds to a particular head text.
-     */
-    public boolean matches(final String candidateText) {
-        final String candidateTextCamelLower = StringUtils.camel(candidateText).toLowerCase();
-        for (final String headText : getHeadTexts()) {
-            if (headText.equalsIgnoreCase(candidateTextCamelLower)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    // ///////////////////////////////////////////////////////////////
-    // set Head Column
-    // ///////////////////////////////////////////////////////////////
-
-    /**
-     * For the BDD framework integration to indicate the head column, but
-     * without no {@link #getHeadCell() head cell}.
-     */
-    public void setHeadColumn(final int column) {
-        this.found = true;
-        setColumnAndHeadCell(column, null);
-    }
-
-    /**
-     * For the BDD framework integration to indicate that the head cell has been
-     * found.
-     */
-    public void setHeadColumn(final int column, final ScenarioCell headCell) {
-        this.found = true;
-        setColumnAndHeadCell(column, headCell);
-    }
-
-    /**
-     * For the BDD framework integration to indicate that the head cell was not
-     * found and has been created.
-     */
-    public void createHeadCell(final int column, final ScenarioCell headCell) {
-        setColumnAndHeadCell(column, headCell);
-    }
-
-    /**
-     * Whether the head cell was found.
-     */
-    public boolean isFound() {
-        return found;
-    }
-
-    /**
-     * The column that is found, if any.
-     */
-    public int getColumn() {
-        return column;
-    }
-
-    /**
-     * The head cell with the text, if any.
-     */
-    public ScenarioCell getHeadCell() {
-        return headCell;
-    }
-
-    private void setColumnAndHeadCell(final int column, final ScenarioCell headCell) {
-        this.column = column;
-        this.headCell = headCell;
-    }
-
-    /**
-     * Holds onto a current (body) cell.
-     */
-    public ScenarioCell getCurrentCell() {
-        return currentCell;
-    }
-
-    /**
-     * @see #getCurrentCell()
-     */
-    public void setCurrentCell(final ScenarioCell cell) {
-        this.currentCell = cell;
-    }
-
-    // ///////////////////////////////////////////////////////////////
-    // capture current value
-    // ///////////////////////////////////////////////////////////////
-
-    private boolean dittoed;
-
-    /**
-     * Captures the current value, but also checking that the column in which
-     * the {@link ScenarioCell value} has been provided corresponds to the
-     * {@link #getColumn() column} of this binding.
-     * 
-     * @see #captureCurrent(ScenarioCell)
-     */
-    public void captureCurrent(final ScenarioCell cell, final int column) {
-        if (column != getColumn()) {
-            return;
-        }
-        captureCurrent(cell);
-    }
-
-    /**
-     * Captures the current {@link ScenarioCell value} for this binding.
-     * 
-     * <p>
-     * For implementations where we already know that the value provided is for
-     * this particular binding.
-     */
-    public void captureCurrent(final ScenarioCell cell) {
-        final ScenarioCell previousCell = getCurrentCell();
-        setCurrentCell(cell);
-        final boolean shouldDitto = StringUtils.isNullOrEmpty(cell.getText());
-        final boolean canDitto = isDitto() && previousCell != null;
-        if (shouldDitto && canDitto) {
-            ditto(previousCell);
-            dittoed = true;
-        } else {
-            dittoed = false;
-        }
-    }
-
-    /**
-     * Whether the most recent call to {@link #captureCurrent(ScenarioCell)}
-     * resulted in a ditto.
-     */
-    public boolean isDittoed() {
-        return dittoed;
-    }
-
-    protected abstract void copy(final ScenarioCell from, ScenarioCell to);
-
-    // ///////////////////////////////////////////////////////////////
-    // toString
-    // ///////////////////////////////////////////////////////////////
-
-    @Override
-    public String toString() {
-        return found ? ("found, current=" + getCurrentCell().getText()) : "not found";
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/CellBindingDefault.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/CellBindingDefault.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/CellBindingDefault.java
deleted file mode 100644
index 254f312..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/CellBindingDefault.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common;
-
-public class CellBindingDefault extends CellBinding {
-
-    public static class Builder {
-        private final String name;
-        private final String[] headText;
-        private boolean autoCreate;
-        private boolean ditto;
-        private boolean optional;
-
-        public Builder(final String name, final String... headText) {
-            this.name = name;
-            this.headText = headText;
-        }
-
-        public Builder autoCreate() {
-            this.autoCreate = true;
-            return this;
-        }
-
-        public Builder ditto() {
-            this.ditto = true;
-            return this;
-        }
-
-        public Builder optional() {
-            this.optional = true;
-            return this;
-        }
-
-        public CellBindingDefault build() {
-            return new CellBindingDefault(name, autoCreate, ditto, optional, headText);
-        }
-    }
-
-    public static Builder builder(final String name, final String... headText) {
-        return new Builder(name, headText);
-    }
-
-    private CellBindingDefault(final String name, final boolean autoCreate, final boolean ditto, final boolean optional, final String[] headTexts) {
-        super(name, autoCreate, ditto, optional, headTexts);
-    }
-
-    @Override
-    protected void copy(final ScenarioCell from, final ScenarioCell to) {
-        to.setText(from.getText());
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/IsisViewerConstants.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/IsisViewerConstants.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/IsisViewerConstants.java
deleted file mode 100644
index 9167111..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/IsisViewerConstants.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-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;
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/Scenario.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/Scenario.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/Scenario.java
deleted file mode 100644
index 66420b9..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/Scenario.java
+++ /dev/null
@@ -1,312 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common;
-
-import static org.apache.isis.core.commons.ensure.Ensure.ensureThatArg;
-import static org.hamcrest.CoreMatchers.anyOf;
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.hamcrest.CoreMatchers.is;
-
-import java.util.Collections;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-
-import org.apache.isis.applib.fixtures.LogonFixture;
-import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.commons.config.IsisConfigurationBuilder;
-import org.apache.isis.core.commons.config.IsisConfigurationBuilderFileSystem;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.adapter.oid.AggregatedOid;
-import org.apache.isis.core.profilestore.InMemoryUserProfileStoreInstaller;
-import org.apache.isis.core.progmodel.facets.value.ValueSemanticsProviderAbstractTemporal;
-import org.apache.isis.core.runtime.fixtures.FixturesInstallerNoop;
-import org.apache.isis.core.runtime.installerregistry.InstallerLookup;
-import org.apache.isis.core.runtime.installers.InstallerLookupDefault;
-import org.apache.isis.core.runtime.runner.IsisInjectModule;
-import org.apache.isis.core.runtime.system.DeploymentType;
-import org.apache.isis.core.runtime.system.IsisSystem;
-import org.apache.isis.core.runtime.system.SystemConstants;
-import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.internal.InitialisationSession;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
-import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
-import org.apache.isis.viewer.bdd.common.components.BddAuthenticationManagerInstaller;
-import org.apache.isis.viewer.bdd.common.components.BddInMemoryPersistenceMechanismInstaller;
-import org.apache.isis.viewer.bdd.common.parsers.DateParser;
-import org.apache.isis.viewer.bdd.common.story.bootstrapping.OpenSession;
-import org.apache.isis.viewer.bdd.common.story.bootstrapping.RunViewer;
-import org.apache.isis.viewer.bdd.common.story.bootstrapping.SetClock;
-import org.apache.isis.viewer.bdd.common.story.bootstrapping.ShutdownIsis;
-import org.apache.isis.viewer.bdd.common.story.registries.AliasRegistryDefault;
-import org.apache.isis.viewer.bdd.common.story.registries.AliasRegistryHolder;
-
-/**
- * Holds the bootstrapped {@link IsisSystem} and provides access to the
- * {@link AliasRegistry aliases}.
- *
- * <p>
- * Typically held in a thread-local by the test framework, acting as a context
- * to the story.
- *
- * <p>
- * Implementation note: this class directly implements {@link AliasRegistrySpi},
- * though delegates to an underlying {@link AliasRegistryDefault}. This is
- * needed because the underlying {@link AliasRegistry} can change on
- * {@link #switchUserWithRoles(String, String)} (see
- * {@link #reAdapt(AliasRegistrySpi)} method).
- */
-public class Scenario implements AliasRegistryHolder {
-
-    private AliasRegistry aliasRegistry = new AliasRegistryDefault();
-
-    private DeploymentType deploymentType;
-    private String configDirectory;
-
-    private IsisSystem isisSystem;
-
-    private InstallerLookupDefault installerLookup;
-
-    private final DateParser dateParser = new DateParser();
-
-    // /////////////////////////////////////////////////////////////
-    // bootstrap / shutdown
-    // /////////////////////////////////////////////////////////////
-
-    public String getConfigDirectory() {
-        return configDirectory;
-    }
-
-    public DeploymentType getDeploymentType() {
-        return deploymentType;
-    }
-
-    public IsisSystem getSystem() {
-        return isisSystem;
-    }
-
-    public InstallerLookup getInstallerLookup() {
-        return installerLookup;
-    }
-
-    @SuppressWarnings("unchecked")
-    public void bootstrapIsis(final String configDirectory, final DeploymentType deploymentType) {
-        this.configDirectory = configDirectory;
-        this.deploymentType = ensureThatArg(deploymentType, is(anyOf(equalTo(DeploymentType.EXPLORATION), equalTo(DeploymentType.PROTOTYPE))));
-
-        final IsisConfigurationBuilderFileSystem configurationBuilder = new IsisConfigurationBuilderFileSystem(getConfigDirectory());
-
-        configurationBuilder.add(SystemConstants.DEPLOYMENT_TYPE_KEY, deploymentType.name());
-        defaultStoryComponentsInto(configurationBuilder);
-
-        getAliasRegistry().clear();
-
-        try {
-            // create system...
-            isisSystem = createSystem(deploymentType, configurationBuilder);
-
-            // ... and provide a session in order to install fixtures
-            IsisContext.openSession(new InitialisationSession());
-
-        } catch (final RuntimeException e) {
-            if (isisSystem != null) {
-                isisSystem.shutdown();
-            }
-            throw e;
-        }
-    }
-
-    private IsisSystem createSystem(final DeploymentType deploymentType, final IsisConfigurationBuilder isisConfigurationBuilder) {
-        this.installerLookup = new InstallerLookupDefault();
-        isisConfigurationBuilder.injectInto(installerLookup);
-
-        final Injector injector = createGuiceInjector(deploymentType, isisConfigurationBuilder, installerLookup);
-        final IsisSystem system = injector.getInstance(IsisSystem.class);
-        return system;
-    }
-
-    private void defaultStoryComponentsInto(final IsisConfigurationBuilder isisConfigurationBuilder) {
-        isisConfigurationBuilder.addDefaultConfigurationResources();
-        isisConfigurationBuilder.add(SystemConstants.AUTHENTICATION_INSTALLER_KEY, BddAuthenticationManagerInstaller.class.getName());
-        isisConfigurationBuilder.add(SystemConstants.OBJECT_PERSISTOR_INSTALLER_KEY, BddInMemoryPersistenceMechanismInstaller.class.getName());
-        isisConfigurationBuilder.add(SystemConstants.PROFILE_PERSISTOR_INSTALLER_KEY, InMemoryUserProfileStoreInstaller.class.getName());
-        isisConfigurationBuilder.add(SystemConstants.FIXTURES_INSTALLER_KEY, FixturesInstallerNoop.class.getName());
-        isisConfigurationBuilder.add(SystemConstants.NOSPLASH_KEY, "" + true);
-    }
-
-    private Injector createGuiceInjector(final DeploymentType deploymentType, final IsisConfigurationBuilder isisConfigurationBuilder, final InstallerLookup installerLookup) {
-        final IsisInjectModule isisModule = new IsisInjectModule(deploymentType, isisConfigurationBuilder, installerLookup);
-        return Guice.createInjector(isisModule);
-    }
-
-    public void shutdownIsis() {
-        new ShutdownIsis(this).shutdown();
-    }
-
-    // /////////////////////////////////////////////////////////////
-    // date+time / logon+switch user
-    // /////////////////////////////////////////////////////////////
-
-    public boolean dateAndTimeIs(final String dateAndTimeStr) {
-        final Date date = dateParser.parse(dateAndTimeStr);
-        if (date != null) {
-            new SetClock(this).setClock(date);
-            return true;
-        } else {
-            return false;
-        }
-    }
-
-    /**
-     * Logon, specifying no roles.
-     * <p>
-     * Unlike the {@link LogonFixture} on regular fixtures, the logonAs is not
-     * automatically remembered until the end of the setup. It should therefore
-     * be invoked at the end of setup explicitly.
-     */
-    public void logonAsOrSwitchUserTo(final String userName) {
-        final List<String> noRoles = Collections.emptyList();
-        logonAsOrSwitchUserTo(userName, noRoles);
-    }
-
-    /**
-     * Logon, specifying roles.
-     * <p>
-     * Unlike the {@link LogonFixture} on regular Isis fixtures, the logonAs is
-     * not automatically remembered until the end of the setup. It should
-     * therefore be invoked at the end of setup explicitly.
-     */
-    public void logonAsOrSwitchUserTo(final String userName, final List<String> roleList) {
-        new OpenSession(this).openSession(userName, roleList);
-        aliasRegistry = reAdapt(aliasRegistry);
-    }
-
-    /**
-     * Need to recreate aliases whenever logout/login.
-     */
-    private AliasRegistry reAdapt(final AliasRegistry aliasesRegistry) {
-        final AliasRegistry newAliasesRegistry = new AliasRegistryDefault();
-
-        // first pass: root adapters
-        for (final Map.Entry<String, ObjectAdapter> aliasAdapter : aliasesRegistry) {
-            final String alias = aliasAdapter.getKey();
-            final ObjectAdapter oldAdapter = aliasAdapter.getValue();
-
-            if (oldAdapter.getOid() instanceof AggregatedOid) {
-                continue;
-            }
-            newAliasesRegistry.aliasAs(alias, getAdapterManager().adapterFor(oldAdapter.getObject()));
-        }
-
-        // for now, not supporting aggregated adapters (difficulty in looking up
-        // the parent adapter because the Oid changes)
-
-        // // second pass: aggregated adapters
-        // for (Map.Entry<String,NakedObject> aliasAdapter : oldAliasesRegistry)
-        // {
-        // final String alias = aliasAdapter.getKey();
-        // final ObjectAdapter oldAdapter = aliasAdapter.getValue();
-        //
-        // if(!(oldAdapter.getOid() instanceof AggregatedOid)) {
-        // continue;
-        // }
-        // AggregatedOid aggregatedOid = (AggregatedOid) oldAdapter.getOid();
-        // final Object parentOid = aggregatedOid.getParentOid();
-        // final ObjectAdapter parentAdapter =
-        // getAdapterManager().getAdapterFor(parentOid);
-        // final String fieldName = aggregatedOid.getFieldName();
-        // final NakedObjectAssociation association =
-        // parentAdapter.getSpecification().getAssociation(fieldName);
-        // final ObjectAdapter newAdapter =
-        // getAdapterManager().adapterFor(oldAdapter.getObject(), parentAdapter,
-        // association);
-        //
-        // newAliasesRegistry.put(alias, newAdapter);
-        // }
-        return newAliasesRegistry;
-    }
-
-    // /////////////////////////////////////////////////////////
-    // date parser
-    // /////////////////////////////////////////////////////////
-
-    public void usingDateFormat(final String dateFormatStr) {
-        dateParser.setDateFormat(dateFormatStr);
-        setTemporalFormat("date", dateFormatStr);
-        setTemporalFormat("datetime", dateParser.getCombinedMask());
-        setTemporalFormat("timestamp", dateParser.getCombinedMask());
-    }
-
-    public void usingTimeFormat(final String timeFormatStr) {
-        dateParser.setTimeFormat(timeFormatStr);
-        setTemporalFormat("time", timeFormatStr);
-        setTemporalFormat("datetime", dateParser.getCombinedMask());
-        setTemporalFormat("timestamp", dateParser.getCombinedMask());
-    }
-
-    private void setTemporalFormat(final String propertyType, final String formatStr) {
-        ValueSemanticsProviderAbstractTemporal.setFormat(propertyType, formatStr);
-    }
-
-    public DateParser getDateParser() {
-        return dateParser;
-    }
-
-    // /////////////////////////////////////////////////////////
-    // run viewer
-    // /////////////////////////////////////////////////////////
-
-    public void runViewer() {
-        new RunViewer(this).run();
-    }
-
-    // //////////////////////////////////////////////////////////////////
-    // AliasRegistry impl
-    // //////////////////////////////////////////////////////////////////
-
-    @Override
-    public AliasRegistry getAliasRegistry() {
-        return aliasRegistry;
-    }
-
-    // /////////////////////////////////////////////////////////
-    // Dependencies (from context)
-    // /////////////////////////////////////////////////////////
-
-    protected PersistenceSession getPersistenceSession() {
-        return IsisContext.getPersistenceSession();
-    }
-
-    private AdapterManager getAdapterManager() {
-        return getPersistenceSession().getAdapterManager();
-    }
-
-    public IsisTransactionManager getTransactionManager() {
-        return IsisContext.getTransactionManager();
-    }
-
-    protected IsisConfiguration getConfiguration() {
-        return IsisContext.getConfiguration();
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/ScenarioBoundValueException.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/ScenarioBoundValueException.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/ScenarioBoundValueException.java
deleted file mode 100644
index 969c320..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/ScenarioBoundValueException.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common;
-
-import java.io.CharArrayWriter;
-import java.io.PrintWriter;
-
-public class ScenarioBoundValueException extends Exception {
-
-    private static final long serialVersionUID = 1L;
-
-    private final CellBinding cellBinding;
-    private final ScenarioCell storyCell;
-
-    public static ScenarioBoundValueException current(final CellBinding cellBinding, final String message) {
-        return new ScenarioBoundValueException(cellBinding, cellBinding.getCurrentCell(), message);
-    }
-
-    public static ScenarioBoundValueException arg(final CellBinding cellBinding, final ScenarioCell storyCell, final String message) {
-        return new ScenarioBoundValueException(cellBinding, storyCell, message);
-    }
-
-    private ScenarioBoundValueException(final CellBinding cellBinding, final ScenarioCell storyCell, final String message) {
-        super(message);
-        this.cellBinding = cellBinding;
-        this.storyCell = storyCell;
-    }
-
-    public CellBinding getCellBinding() {
-        return cellBinding;
-    }
-
-    public ScenarioCell getStoryCell() {
-        return storyCell;
-    }
-
-    public String asString() {
-        final CharArrayWriter caw = new CharArrayWriter();
-        this.printStackTrace(new PrintWriter(caw));
-        return caw.toString();
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/ScenarioCell.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/ScenarioCell.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/ScenarioCell.java
deleted file mode 100644
index 40ca0b9..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/ScenarioCell.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common;
-
-public interface ScenarioCell {
-
-    /**
-     * The text represented by the source.
-     */
-    public String getText();
-
-    /**
-     * Sets the text held by the source.
-     */
-    public void setText(String str);
-
-    /**
-     * The implementation-specific representation of this text.
-     */
-    public Object getSource();
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/ScenarioCellDefault.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/ScenarioCellDefault.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/ScenarioCellDefault.java
deleted file mode 100644
index b6b27fb..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/ScenarioCellDefault.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common;
-
-/**
- * Simply holds the text.
- * 
- */
-public class ScenarioCellDefault implements ScenarioCell {
-
-    private String source;
-
-    public ScenarioCellDefault(final String source) {
-        this.source = source;
-    }
-
-    @Override
-    public String getText() {
-        return source;
-    }
-
-    @Override
-    public void setText(final String str) {
-        this.source = str;
-    }
-
-    /**
-     * The implementation-specific representation of this text.
-     */
-    @Override
-    public Object getSource() {
-        return source;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/ScenarioValueException.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/ScenarioValueException.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/ScenarioValueException.java
deleted file mode 100644
index c2a92ca..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/ScenarioValueException.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common;
-
-public class ScenarioValueException extends Exception {
-
-    private static final long serialVersionUID = 1L;
-
-    public ScenarioValueException() {
-    }
-
-    public ScenarioValueException(final String message) {
-        super(message);
-    }
-
-    public ScenarioValueException(final Throwable cause) {
-        super(cause);
-    }
-
-    public ScenarioValueException(final String message, final Throwable cause) {
-        super(message, cause);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/ServiceRegistry.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/ServiceRegistry.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/ServiceRegistry.java
deleted file mode 100644
index 65ee3e1..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/ServiceRegistry.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common;
-
-public interface ServiceRegistry {
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/components/BddAuthenticationManagerInstaller.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/components/BddAuthenticationManagerInstaller.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/components/BddAuthenticationManagerInstaller.java
deleted file mode 100644
index 795e57b..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/components/BddAuthenticationManagerInstaller.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.components;
-
-import java.util.List;
-
-import com.google.common.collect.Lists;
-
-import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.runtime.authentication.AuthenticationManagerStandardInstallerAbstractForDfltRuntime;
-import org.apache.isis.core.runtime.authentication.standard.Authenticator;
-import org.apache.isis.core.security.authentication.AuthenticatorBypass;
-
-public class BddAuthenticationManagerInstaller extends AuthenticationManagerStandardInstallerAbstractForDfltRuntime {
-
-    public BddAuthenticationManagerInstaller() {
-        super("bdd");
-    }
-
-    @Override
-    protected List<Authenticator> createAuthenticators(final IsisConfiguration configuration) {
-        return Lists.<Authenticator> newArrayList(new AuthenticatorBypass(configuration));
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/components/BddInMemoryPersistenceMechanismInstaller.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/components/BddInMemoryPersistenceMechanismInstaller.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/components/BddInMemoryPersistenceMechanismInstaller.java
deleted file mode 100644
index 4b5af4f..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/components/BddInMemoryPersistenceMechanismInstaller.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.components;
-
-import org.apache.isis.core.objectstore.InMemoryPersistenceMechanismInstaller;
-import org.apache.isis.core.runtime.system.DeploymentType;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSessionFactory;
-
-public class BddInMemoryPersistenceMechanismInstaller extends InMemoryPersistenceMechanismInstaller {
-
-    public BddInMemoryPersistenceMechanismInstaller() {
-    }
-
-    // ///////////////////////////////////////////////////////////////
-    // Name
-    // ///////////////////////////////////////////////////////////////
-
-    @Override
-    public String getName() {
-        return "bdd";
-    }
-
-    // ///////////////////////////////////////////////////////////////
-    // Hook methods
-    // ///////////////////////////////////////////////////////////////
-
-    @Override
-    public PersistenceSessionFactory createPersistenceSessionFactory(final DeploymentType deploymentType) {
-        return new BddInMemoryPersistenceSessionFactory(deploymentType, getConfiguration(), this);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/components/BddInMemoryPersistenceSessionFactory.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/components/BddInMemoryPersistenceSessionFactory.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/components/BddInMemoryPersistenceSessionFactory.java
deleted file mode 100644
index 01210b4..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/components/BddInMemoryPersistenceSessionFactory.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.components;
-
-import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.metamodel.facets.object.cached.CachedFacet;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.objectstore.InMemoryPersistenceSessionFactory;
-import org.apache.isis.core.objectstore.internal.ObjectStorePersistedObjects;
-import org.apache.isis.core.runtime.persistence.PersistenceSessionFactoryDelegate;
-import org.apache.isis.core.runtime.system.DeploymentType;
-
-/**
- * As per {@link InMemoryPersistenceSessionFactory}, but uses the
- * {@link BddObjectStorePersistedObjects} implementation which stores any
- * {@link CachedFacet cached} {@link ObjectSpecification class}es
- * <tt>static</tt>ally (and thus persisted across multiple setups/teardowns of
- * the {@link NakedObjectsContext}.
- */
-public class BddInMemoryPersistenceSessionFactory extends InMemoryPersistenceSessionFactory {
-
-    public BddInMemoryPersistenceSessionFactory(final DeploymentType deploymentType, final IsisConfiguration configuration, final PersistenceSessionFactoryDelegate persistenceSessionFactoryDelegate) {
-        super(deploymentType, configuration, persistenceSessionFactoryDelegate);
-    }
-
-    @Override
-    public ObjectStorePersistedObjects createPersistedObjects() {
-        return new BddObjectStorePersistedObjects();
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/components/BddObjectStorePersistedObjects.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/components/BddObjectStorePersistedObjects.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/components/BddObjectStorePersistedObjects.java
deleted file mode 100644
index ba3336a..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/components/BddObjectStorePersistedObjects.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.components;
-
-import java.util.Map;
-
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Maps;
-
-import org.apache.isis.core.commons.exceptions.IsisException;
-import org.apache.isis.core.metamodel.adapter.oid.Oid;
-import org.apache.isis.core.metamodel.facets.object.cached.CachedFacet;
-import org.apache.isis.core.metamodel.spec.ObjectSpecId;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.objectstore.internal.ObjectStoreInstances;
-import org.apache.isis.core.objectstore.internal.ObjectStorePersistedObjects;
-import org.apache.isis.core.runtime.system.persistence.IdentifierGeneratorDefault.Memento;
-
-/**
- * Stores instances in one of two maps, based on whether have their
- * specification has the {@link CachedFacet} (represents cached or reference
- * data) or not (represents operational data).
- * <p>
- * Those that are cached are stored in a <tt>static</tt> map that is never
- * {@link #clear()}ed down. Those that are operational go in a regular instance
- * cache and can be {@link #clear()}ed.
- */
-public class BddObjectStorePersistedObjects implements ObjectStorePersistedObjects {
-
-    private static final Map<ObjectSpecification, ObjectStoreInstances> cachedInstancesBySpecMap = Maps.newHashMap();
-
-    private final Map<ObjectSpecification, ObjectStoreInstances> operationalInstancesBySpecMap = Maps.newHashMap();
-    private final Map<ObjectSpecId, Oid> serviceOidByIdMap = Maps.newHashMap();
-    
-    private Memento oidGeneratorMemento;
-
-    @Override
-    public Memento getOidGeneratorMemento() {
-        return oidGeneratorMemento;
-    }
-
-    @Override
-    public void saveOidGeneratorMemento(final Memento memento) {
-        this.oidGeneratorMemento = memento;
-    }
-
-    @Override
-    public Oid getService(final ObjectSpecId objectSpecId) {
-        return serviceOidByIdMap.get(objectSpecId);
-    }
-
-    @Override
-    public void registerService(final ObjectSpecId objectSpecId, final Oid oid) {
-        final Oid oidLookedUpByName = serviceOidByIdMap.get(objectSpecId);
-        if (oidLookedUpByName != null) {
-            if (!oidLookedUpByName.equals(oid)) {
-                throw new IsisException("Already another service registered as name: " + objectSpecId + " (existing Oid: " + oidLookedUpByName + ", " + "intended: " + oid + ")");
-            }
-        } else {
-            serviceOidByIdMap.put(objectSpecId, oid);
-        }
-    }
-
-    @Override
-    public Iterable<ObjectSpecification> specifications() {
-        return Iterables.concat(BddObjectStorePersistedObjects.cachedInstancesBySpecMap.keySet(), operationalInstancesBySpecMap.keySet());
-    }
-
-    @Override
-    public Iterable<ObjectStoreInstances> instances() {
-        return Iterables.concat(BddObjectStorePersistedObjects.cachedInstancesBySpecMap.values(), operationalInstancesBySpecMap.values());
-    }
-
-    @Override
-    public ObjectStoreInstances instancesFor(final ObjectSpecification spec) {
-        if (isCached(spec)) {
-            return getFromMap(spec, BddObjectStorePersistedObjects.cachedInstancesBySpecMap);
-        } else {
-            return getFromMap(spec, operationalInstancesBySpecMap);
-        }
-    }
-
-    // //////////////////////////////////////////////////////////////////
-    // Helpers
-    // //////////////////////////////////////////////////////////////////
-
-    private ObjectStoreInstances getFromMap(final ObjectSpecification spec, final Map<ObjectSpecification, ObjectStoreInstances> map) {
-        ObjectStoreInstances ins = map.get(spec);
-        if (ins == null) {
-            ins = new ObjectStoreInstances(spec);
-            map.put(spec, ins);
-        }
-        return ins;
-    }
-
-    private boolean isCached(final ObjectSpecification spec) {
-        return spec.containsFacet(CachedFacet.class);
-    }
-
-    /**
-     * Only clears the operational instances, not the cached instances.
-     */
-    @Override
-    public void clear() {
-        operationalInstancesBySpecMap.clear();
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/components/IsisSystemUsingInstallersWithinStory.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/components/IsisSystemUsingInstallersWithinStory.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/components/IsisSystemUsingInstallersWithinStory.java
deleted file mode 100644
index ca7cc8d..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/components/IsisSystemUsingInstallersWithinStory.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.components;
-
-import org.apache.isis.core.profilestore.InMemoryUserProfileStoreInstaller;
-import org.apache.isis.core.runtime.authentication.AuthenticationManagerInstaller;
-import org.apache.isis.core.runtime.installerregistry.InstallerLookup;
-import org.apache.isis.core.runtime.installerregistry.installerapi.PersistenceMechanismInstaller;
-import org.apache.isis.core.runtime.system.DeploymentType;
-import org.apache.isis.core.runtime.systemusinginstallers.IsisSystemUsingInstallers;
-import org.apache.isis.core.runtime.userprofile.UserProfileStoreInstaller;
-
-public class IsisSystemUsingInstallersWithinStory extends IsisSystemUsingInstallers {
-
-    public IsisSystemUsingInstallersWithinStory(final DeploymentType deploymentType, final InstallerLookup installerLookup) {
-        super(deploymentType, installerLookup);
-
-        final AuthenticationManagerInstaller authManagerInstaller = new BddAuthenticationManagerInstaller();
-        setAuthenticationInstaller(getInstallerLookup().injectDependenciesInto(authManagerInstaller));
-
-        final PersistenceMechanismInstaller persistorInstaller = new BddInMemoryPersistenceMechanismInstaller();
-        setPersistenceMechanismInstaller(getInstallerLookup().injectDependenciesInto(persistorInstaller));
-
-        final UserProfileStoreInstaller userProfileStoreInstaller = new InMemoryUserProfileStoreInstaller();
-        setUserProfileStoreInstaller(getInstallerLookup().injectDependenciesInto(userProfileStoreInstaller));
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AbstractFixturePeer.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AbstractFixturePeer.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AbstractFixturePeer.java
deleted file mode 100644
index 573dbd6..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/AbstractFixturePeer.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures;
-
-import java.util.Arrays;
-import java.util.List;
-
-import org.apache.isis.core.commons.authentication.AuthenticationSession;
-import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
-import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
-import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.ObjectStore;
-import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
-import org.apache.isis.core.runtime.system.transaction.IsisTransactionManager;
-import org.apache.isis.viewer.bdd.common.AliasRegistry;
-import org.apache.isis.viewer.bdd.common.CellBinding;
-
-public abstract class AbstractFixturePeer {
-
-    private final AliasRegistry aliasRegistry;
-    private final List<CellBinding> cellBindings;
-
-    public AbstractFixturePeer(final AliasRegistry aliasRegistry, final CellBinding... cellBindings) {
-        this(aliasRegistry, Arrays.asList(cellBindings));
-    }
-
-    public AbstractFixturePeer(final AliasRegistry storyRegistries, final List<CellBinding> cellBindings) {
-        this.aliasRegistry = storyRegistries;
-        this.cellBindings = cellBindings;
-    }
-
-    public AliasRegistry getAliasRegistry() {
-        return aliasRegistry;
-    }
-
-    public List<CellBinding> getCellBindings() {
-        return cellBindings;
-    }
-
-    public List<Object> getServices() {
-        return IsisContext.getServices();
-    }
-
-    public SpecificationLoaderSpi getSpecificationLoader() {
-        return IsisContext.getSpecificationLoader();
-    }
-
-    public AuthenticationSession getAuthenticationSession() {
-        return IsisContext.getAuthenticationSession();
-    }
-
-    public PersistenceSession getPersistenceSession() {
-        return IsisContext.getPersistenceSession();
-    }
-
-    protected AdapterManager getAdapterManager() {
-        return getPersistenceSession().getAdapterManager();
-    }
-
-    protected ObjectStore getObjectStore() {
-        return getPersistenceSession().getObjectStore();
-    }
-
-    protected IsisTransactionManager getTransactionManager() {
-        return IsisContext.getTransactionManager();
-    }
-
-    public boolean isValidAlias(final String alias) {
-        return getAliasRegistry().getAliased(alias) != null;
-    }
-
-}


[15/19] ISIS-463: mothballing BDD viewer

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/test/java/org/apache/isis/viewer/bdd/common/registries/AliasesRegistryTest.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/test/java/org/apache/isis/viewer/bdd/common/registries/AliasesRegistryTest.java b/component/viewer/bdd/common/src/test/java/org/apache/isis/viewer/bdd/common/registries/AliasesRegistryTest.java
deleted file mode 100644
index 01617b4..0000000
--- a/component/viewer/bdd/common/src/test/java/org/apache/isis/viewer/bdd/common/registries/AliasesRegistryTest.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.registries;
-
-import org.hamcrest.CoreMatchers;
-import org.jmock.Mockery;
-import org.jmock.integration.junit4.JMock;
-import org.jmock.integration.junit4.JUnit4Mockery;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.viewer.bdd.common.story.registries.AliasRegistryDefault;
-
-@RunWith(JMock.class)
-public class AliasesRegistryTest {
-
-    private final Mockery mockery = new JUnit4Mockery();
-
-    private AliasRegistryDefault registry;
-
-    private ObjectAdapter mockAdapter1;
-    private ObjectAdapter mockAdapter2;
-    @SuppressWarnings("unused")
-    private ObjectAdapter mockAdapter3;
-
-    @Before
-    public void setUp() throws Exception {
-        mockAdapter1 = mockery.mock(ObjectAdapter.class, "adapter1");
-        mockAdapter2 = mockery.mock(ObjectAdapter.class, "adapter2");
-        mockAdapter3 = mockery.mock(ObjectAdapter.class, "adapter3");
-        registry = new AliasRegistryDefault();
-    }
-
-    @Test
-    public void registerOneAdapter() {
-        final String heldAs1 = registry.aliasPrefixedAs("Foo", mockAdapter1);
-        Assert.assertThat(heldAs1, CoreMatchers.is("Foo#1"));
-    }
-
-    @Test
-    public void registerTwoAdaptersOfSamePrefix() {
-        @SuppressWarnings("unused")
-        final String heldAs1 = registry.aliasPrefixedAs("Foo", mockAdapter1);
-        final String heldAs2 = registry.aliasPrefixedAs("Foo", mockAdapter2);
-        Assert.assertThat(heldAs2, CoreMatchers.is("Foo#2"));
-    }
-
-    @Test
-    public void registerAdaptersOfDiffereingPrefixes() {
-        @SuppressWarnings("unused")
-        final String heldAs1 = registry.aliasPrefixedAs("Foo", mockAdapter1);
-        final String heldAs2 = registry.aliasPrefixedAs("Bar", mockAdapter2);
-        Assert.assertThat(heldAs2, CoreMatchers.is("Bar#1"));
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/concordion/pom.xml
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/concordion/pom.xml b/component/viewer/bdd/concordion/pom.xml
deleted file mode 100755
index bbdcd9c..0000000
--- a/component/viewer/bdd/concordion/pom.xml
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-         http://www.apache.org/licenses/LICENSE-2.0
-         
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-
-	<parent>
-	    <groupId>org.apache.isis.viewer</groupId>
-	    <artifactId>isis-viewer-bdd</artifactId>
-	    <version>1.0.0-SNAPSHOT</version>
-	</parent>
-	
-	<artifactId>isis-viewer-bdd-concordion</artifactId>
-	<name>Isis BDD Viewer (Concordion)</name>
-
-	<properties>
-		<siteBaseDir>..</siteBaseDir>
-		<relativeUrl>concordion/</relativeUrl>
-
-		<concordion.version>1.4.3</concordion.version>
-	</properties>
-	
-    <!-- used in Site generation for relative references. -->
-    <url>http://isis.apache.org/${relativeUrl}</url>
-
-    <dependencyManagement>
-        <dependencies>
-
-            <!-- 3rd party dependencies -->
-			<dependency>
-				<groupId>org.concordion</groupId>
-				<artifactId>concordion</artifactId>
-		        <version>${concordion.version}</version>
-			</dependency>
-         </dependencies>
-    </dependencyManagement>
-
-	<dependencies>
-		<dependency>
-			<groupId>org.apache.isis.viewer</groupId>
-			<artifactId>isis-viewer-bdd-common</artifactId>
-		</dependency>
-	
-        <dependency>
-            <groupId>org.concordion</groupId>
-            <artifactId>concordion</artifactId>
-            <exclusions>
-               <exclusion>
-                   <!--  excluded because of LGPL; end-developer must include in POM file directly -->
-                   <groupId>xom</groupId>
-                   <artifactId>xom</artifactId>
-               </exclusion>
-                <exclusion>
-                    <!-- for dependency convergence -->
-                    <groupId>junit</groupId>
-                    <artifactId>junit-dep</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-
-		<dependency>
-            <groupId>junit</groupId>
-	        <artifactId>junit</artifactId>
-		</dependency>
-	</dependencies>
-
-</project>

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/AbstractIsisConcordionScenario.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/AbstractIsisConcordionScenario.java b/component/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/AbstractIsisConcordionScenario.java
deleted file mode 100644
index ecf7eb0..0000000
--- a/component/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/AbstractIsisConcordionScenario.java
+++ /dev/null
@@ -1,539 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.concordion;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Collections;
-import java.util.List;
-
-import com.google.common.base.Function;
-import com.google.common.collect.Iterables;
-
-import org.apache.log4j.BasicConfigurator;
-import org.apache.log4j.Level;
-import org.apache.log4j.LogManager;
-import org.concordion.Concordion;
-import org.concordion.api.ResultSummary;
-import org.concordion.internal.ConcordionBuilder;
-import org.concordion.internal.FileTarget;
-import org.junit.Test;
-
-import org.apache.isis.core.commons.lang.IoUtils;
-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.runtime.system.DeploymentType;
-import org.apache.isis.viewer.bdd.common.Scenario;
-import org.apache.isis.viewer.bdd.common.ScenarioValueException;
-import org.apache.isis.viewer.bdd.common.fixtures.SetUpObjectsPeer.Mode;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.Perform;
-import org.apache.isis.viewer.bdd.concordion.internal.concordion.IsisExecuteCommandWithHeader;
-import org.apache.isis.viewer.bdd.concordion.internal.fixtures.AliasItemsInListForConcordion;
-import org.apache.isis.viewer.bdd.concordion.internal.fixtures.CheckCollectionContentsForConcordion;
-import org.apache.isis.viewer.bdd.concordion.internal.fixtures.CheckListForConcordion;
-import org.apache.isis.viewer.bdd.concordion.internal.fixtures.SetUpObjectsForConcordion;
-import org.apache.isis.viewer.bdd.concordion.internal.fixtures.UsingIsisViewerForConcordion;
-
-public abstract class AbstractIsisConcordionScenario {
-
-    public static final String DEFAULT_CONCORDION_CSS = "concordion.css";
-
-    /**
-     * The system property that is searched for to use as the
-     * {@link #outputDir() target directory}.
-     */
-    public static final String DEFAULT_CONCORDION_OUTPUT_DIR_PROPERTY = "concordion.output.dir";
-
-    /**
-     * The directory used by default if the
-     * {@link #DEFAULT_CONCORDION_OUTPUT_DIR_PROPERTY default property} for the
-     * {@link #outputDir() target directory} is not specified (and the
-     * {@link #outputDir()} method has not been overridden).
-     */
-    public static final String DEFAULT_OUTPUT_DIR = "/tmp/concordion";
-
-    public static final String NS_URI = "http://isis.apache.org/2010/concordion";
-    private static final String CMD_EXECUTE = "execute";
-
-    private static ThreadLocal<Scenario> scenarioThreadLocal = new ThreadLocal<Scenario>() {
-        @Override
-        protected Scenario initialValue() {
-            return new Scenario();
-        }
-    };
-
-    public static Scenario getScenario() {
-        return scenarioThreadLocal.get();
-    }
-
-    // ////////////////////////////////////////////////////////////////////////
-    // @Test
-    // ////////////////////////////////////////////////////////////////////////
-
-    @Test
-    public void runScenario() throws Throwable {
-        BasicConfigurator.configure();
-        LogManager.getRootLogger().setLevel(Level.INFO);
-        try {
-            final Concordion concordion = createConcordion();
-            final ResultSummary resultSummary = concordion.process(this);
-            resultSummary.print(System.out, this);
-            resultSummary.assertIsSatisfied(this);
-        } finally {
-            copyCustomCssIfDefined();
-        }
-    }
-
-    private void copyCustomCssIfDefined() {
-        final Class<?> cssClass = customCssPackage();
-        final String customCss = customCss();
-        if (cssClass == null || customCss == null) {
-            return;
-        }
-        final InputStream cssInputFile = cssClass.getResourceAsStream(customCss);
-        final String cssPackageName = cssClass.getPackage().getName();
-        final String cssPackagePath = asPath(cssPackageName);
-        final String cssOutputFileName = StringUtils.combinePaths(outputDir(), cssPackagePath, customCss);
-        try {
-            final ByteArrayOutputStream baos = new ByteArrayOutputStream();
-            IoUtils.copy(cssInputFile, baos);
-            if (baos.size() > 0) {
-                IoUtils.copy(new ByteArrayInputStream(baos.toByteArray()), new FileOutputStream(cssOutputFileName));
-            }
-        } catch (final IllegalArgumentException e) {
-            System.err.printf("failed to copy custom CSS to '%s'\n", customCss, cssOutputFileName);
-            return;
-        } catch (final IOException e) {
-            System.err.printf("failed to copy custom CSS '%s' to '%s'\n", customCss, cssOutputFileName);
-            return;
-        }
-    }
-
-    private String asPath(final String name) {
-        return name.replace('.', File.separatorChar);
-    }
-
-    // ////////////////////////////////////////////////////////////////////////
-    // Hooks
-    // ////////////////////////////////////////////////////////////////////////
-
-    /**
-     * The directory to which the processed HTML should be copied.
-     * 
-     * <p>
-     * Defaults to the value of the
-     * {@value #DEFAULT_CONCORDION_OUTPUT_DIR_PROPERTY} system property, or
-     * {@value #DEFAULT_OUTPUT_DIR} if that property is not specified.
-     * 
-     * <p>
-     * Can either be overridden if wish to specify some other mechanism for
-     * determining where the output is generated.
-     */
-    protected String outputDir() {
-        final String concordionOutputDir = System.getProperty(DEFAULT_CONCORDION_OUTPUT_DIR_PROPERTY);
-        return StringUtils.isNullOrEmpty(concordionOutputDir) ? DEFAULT_OUTPUT_DIR : concordionOutputDir;
-    }
-
-    /**
-     * Optional hook method to specify the class (any class) that resides in the
-     * same package as the {@link #customCss()}.
-     * 
-     * <p>
-     * Return <tt>null</tt> if no custom CSS has been provided.
-     * 
-     * @see #customCss()
-     */
-    protected Class<?> customCssPackage() {
-        return null;
-    }
-
-    /**
-     * Optional hook method to specify the name of the custom CSS file.
-     * 
-     * <p>
-     * Defaults to {@value #DEFAULT_CONCORDION_CSS} so you do not need to
-     * override if your custom CSS file has this name. However, it is necessary
-     * to override {@link #customCssPackage()} to indicate the package that the
-     * CSS resides in.
-     * 
-     * @see #customCssPackage()
-     */
-    protected String customCss() {
-        return DEFAULT_CONCORDION_CSS;
-    }
-
-    private Concordion createConcordion() {
-        final String targetDir = outputDir();
-        if (targetDir == null) {
-            throw new IllegalStateException("targetDir() cannot be null");
-        }
-        final ConcordionBuilder builder = new ConcordionBuilder() {
-        }.withTarget(new FileTarget(new File(targetDir))).withCommand(NS_URI, CMD_EXECUTE, new IsisExecuteCommandWithHeader());
-        return builder.build();
-    }
-
-    // ////////////////////////////////////////////////////////////////////////
-    // bootstrapIsis / shutdownIsis
-    // ////////////////////////////////////////////////////////////////////////
-
-    /**
-     * For calling within a <tt>#setUp()</tt> method.
-     * 
-     * @see {@link #bootstrapIsis(String, String)}
-     */
-    public void bootstrapIsis(final String configDirectory, final DeploymentType deploymentType) {
-        getScenario().bootstrapIsis(StringUtils.normalized(configDirectory), deploymentType);
-    }
-
-    /**
-     * For calling from XHTML script.
-     * 
-     * @see #bootstrapIsis(String, DeploymentType)
-     * @return <tt>boolean</tt> so that XHTML can assert on it.
-     */
-    public boolean bootstrapIsis(final String configDirectory, final String deploymentTypeStr) {
-        bootstrapIsis(configDirectory, DeploymentType.lookup(StringUtils.normalized(deploymentTypeStr)));
-        return true; // any runtime exception will propagate
-    }
-
-    public void shutdownIsis() {
-        getScenario().shutdownIsis();
-    }
-
-    // ////////////////////////////////////////////////////////////////////////
-    // logon as / switch user
-    // ////////////////////////////////////////////////////////////////////////
-
-    public boolean logonAs(final String userName) {
-        getScenario().logonAsOrSwitchUserTo(StringUtils.normalized(userName));
-        return true;
-    }
-
-    public boolean logonAsWithRoles(final String userName, final String roleListStr) {
-        final List<String> roleList = StringUtils.splitOnCommas(StringUtils.normalized(roleListStr));
-        getScenario().logonAsOrSwitchUserTo(userName, roleList);
-        return true;
-    }
-
-    public void switchUser(final String userName) {
-        logonAs(userName);
-    }
-
-    public void switchUserWithRoles(final String userName, final String roleListStr) {
-        logonAsWithRoles(userName, roleListStr);
-    }
-
-    // ////////////////////////////////////////////////////////////////////////
-    // date is / time is
-    // ////////////////////////////////////////////////////////////////////////
-
-    public boolean usingDateFormat(final String dateFormatStr) {
-        getScenario().usingDateFormat(dateFormatStr);
-        return true;
-    }
-
-    public boolean usingTimeFormat(final String timeFormatStr) {
-        getScenario().usingTimeFormat(timeFormatStr);
-        return true;
-    }
-
-    public boolean dateIs(final String dateAndTimeStr) throws ScenarioValueException {
-        return dateAndTimeIs(dateAndTimeStr);
-    }
-
-    public boolean timeIs(final String dateAndTimeStr) throws ScenarioValueException {
-        return dateAndTimeIs(dateAndTimeStr);
-    }
-
-    private boolean dateAndTimeIs(final String dateAndTimeStr) throws ScenarioValueException {
-        return getScenario().dateAndTimeIs(dateAndTimeStr);
-    }
-
-    // ////////////////////////////////////////////////////////////////////////
-    // alias service
-    // ////////////////////////////////////////////////////////////////////////
-
-    public boolean aliasService(final String aliasAs, final String className) {
-        try {
-            getScenario().getAliasRegistry().aliasService(StringUtils.normalized(aliasAs), StringUtils.normalized(className));
-            return true;
-        } catch (final ScenarioValueException e) {
-            return false;
-        }
-    }
-
-    // ////////////////////////////////////////////////////////////////////////
-    // setup object
-    // ////////////////////////////////////////////////////////////////////////
-
-    public String setUpObject(final String className, final String alias, final String arg0) {
-        return setUpObjectsVarargs(className, alias, arg0);
-    }
-
-    public String setUpObject(final String className, final String alias, final String arg0, final String arg1) {
-        return setUpObjectsVarargs(className, alias, arg0, arg1);
-    }
-
-    public String setUpObject(final String className, final String alias, final String arg0, final String arg1, final String arg2) {
-        return setUpObjectsVarargs(className, alias, arg0, arg1, arg2);
-    }
-
-    public String setUpObject(final String className, final String alias, final String arg0, final String arg1, final String arg2, final String arg3) {
-        return setUpObjectsVarargs(className, alias, arg0, arg1, arg2, arg3);
-    }
-
-    public String setUpObject(final String className, final String alias, final String arg0, final String arg1, final String arg2, final String arg3, final String arg4) {
-        return setUpObjectsVarargs(className, alias, arg0, arg1, arg2, arg3, arg4);
-    }
-
-    public String setUpObject(final String className, final String alias, final String arg0, final String arg1, final String arg2, final String arg3, final String arg4, final String arg5) {
-        return setUpObjectsVarargs(className, alias, arg0, arg1, arg2, arg3, arg4, arg5);
-    }
-
-    public String setUpObject(final String className, final String alias, final String arg0, final String arg1, final String arg2, final String arg3, final String arg4, final String arg5, final String arg6) {
-        return setUpObjectsVarargs(className, alias, arg0, arg1, arg2, arg3, arg4, arg5, arg6);
-    }
-
-    public String setUpObject(final String className, final String alias, final String arg0, final String arg1, final String arg2, final String arg3, final String arg4, final String arg5, final String arg6, final String arg7) {
-        return setUpObjectsVarargs(className, alias, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
-    }
-
-    public String setUpObject(final String className, final String alias, final String arg0, final String arg1, final String arg2, final String arg3, final String arg4, final String arg5, final String arg6, final String arg7, final String arg8) {
-        return setUpObjectsVarargs(className, alias, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
-    }
-
-    public String setUpObject(final String className, final String alias, final String arg0, final String arg1, final String arg2, final String arg3, final String arg4, final String arg5, final String arg6, final String arg7, final String arg8, final String arg9) {
-        return setUpObjectsVarargs(className, alias, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
-    }
-
-    private SetUpObjectsForConcordion setUpObjects;
-
-    /**
-     * Workaround for OGNL defect.
-     */
-    protected String setUpObjectsVarargs(final String className, final String alias, final String... propertyValues) {
-        return setUpObjectsVarargsNormalized(StringUtils.normalized(className), StringUtils.normalized(alias), StringUtils.normalized(propertyValues));
-    }
-
-    private String setUpObjectsVarargsNormalized(final String className, final String alias, final String... propertyValues) {
-        if (executingInline()) {
-            setUpObjects = new SetUpObjectsForConcordion(getScenario().getAliasRegistry(), className, Mode.PERSIST);
-            setUpObjects.executeHeader(alias, propertyValues);
-            return setUpObjects.executeRow(alias, propertyValues);
-        } else {
-            if (executingTableHeader()) {
-                setUpObjects = new SetUpObjectsForConcordion(getScenario().getAliasRegistry(), className, Mode.PERSIST);
-                return setUpObjects.executeHeader(alias, propertyValues);
-            } else {
-                return setUpObjects.executeRow(alias, propertyValues);
-            }
-        }
-    }
-
-    // ////////////////////////////////////////////////////////////////////////
-    // using isis viewer
-    // ////////////////////////////////////////////////////////////////////////
-
-    private UsingIsisViewerForConcordion usingIsisViewer;
-
-    public String usingIsisViewer(final String onObject, final String aliasResultAs, final String perform, final String usingMember) {
-        return usingIsisViewerThatArgsVarargs(onObject, aliasResultAs, perform, usingMember, null, null, null, null);
-    }
-
-    public String usingIsisViewerThat(final String onObject, final String aliasResultAs, final String perform, final String usingMember, final String thatIt) {
-        return usingIsisViewerThatArgsVarargs(onObject, aliasResultAs, perform, usingMember, thatIt, null, null, null);
-    }
-
-    public String usingIsisViewerArgs(final String onObject, final String aliasResultAs, final String perform, final String usingMember, final String arg0) {
-        return usingIsisViewerThatArgsVarargs(onObject, aliasResultAs, perform, usingMember, null, arg0);
-    }
-
-    public String usingIsisViewerArgs(final String onObject, final String aliasResultAs, final String perform, final String usingMember, final String arg0, final String arg1) {
-        return usingIsisViewerThatArgsVarargs(onObject, aliasResultAs, perform, usingMember, null, arg0, arg1);
-    }
-
-    public String usingIsisViewerArgs(final String onObject, final String aliasResultAs, final String perform, final String usingMember, final String arg0, final String arg1, final String arg2) {
-        return usingIsisViewerThatArgsVarargs(onObject, aliasResultAs, perform, usingMember, null, arg0, arg1, arg2);
-    }
-
-    public String usingIsisViewerArgs(final String onObject, final String aliasResultAs, final String perform, final String usingMember, final String arg0, final String arg1, final String arg2, final String arg3) {
-        return usingIsisViewerThatArgsVarargs(onObject, aliasResultAs, perform, usingMember, null, arg0, arg1, arg2, arg3);
-    }
-
-    public String usingIsisViewerArgs(final String onObject, final String aliasResultAs, final String perform, final String usingMember, final String arg0, final String arg1, final String arg2, final String arg3, final String arg4) {
-        return usingIsisViewerThatArgsVarargs(onObject, aliasResultAs, perform, usingMember, null, arg0, arg1, arg2, arg3, arg4);
-    }
-
-    public String usingIsisViewerArgs(final String onObject, final String aliasResultAs, final String perform, final String usingMember, final String arg0, final String arg1, final String arg2, final String arg3, final String arg4, final String arg5) {
-        return usingIsisViewerThatArgsVarargs(onObject, aliasResultAs, perform, usingMember, null, arg0, arg1, arg2, arg3, arg4, arg5);
-    }
-
-    public String usingIsisViewerThatArgs(final String onObject, final String aliasResultAs, final String perform, final String usingMember, final String thatIt, final String arg0) {
-        return usingIsisViewerThatArgsVarargs(onObject, aliasResultAs, perform, usingMember, thatIt, arg0);
-    }
-
-    public String usingIsisViewerThatArgs(final String onObject, final String aliasResultAs, final String perform, final String usingMember, final String thatIt, final String arg0, final String arg1) {
-        return usingIsisViewerThatArgsVarargs(onObject, aliasResultAs, perform, usingMember, thatIt, arg0, arg1);
-    }
-
-    public String usingIsisViewerThatArgs(final String onObject, final String aliasResultAs, final String perform, final String usingMember, final String thatIt, final String arg0, final String arg1, final String arg2) {
-        return usingIsisViewerThatArgsVarargs(onObject, aliasResultAs, perform, usingMember, thatIt, arg0, arg1, arg2);
-    }
-
-    public String usingIsisViewerThatArgs(final String onObject, final String aliasResultAs, final String perform, final String usingMember, final String thatIt, final String arg0, final String arg1, final String arg2, final String arg3) {
-        return usingIsisViewerThatArgsVarargs(onObject, aliasResultAs, perform, usingMember, thatIt, arg0, arg1, arg2, arg3);
-    }
-
-    public String usingIsisViewerThatArgs(final String onObject, final String aliasResultAs, final String perform, final String usingMember, final String thatIt, final String arg0, final String arg1, final String arg2, final String arg3, final String arg4) {
-        return usingIsisViewerThatArgsVarargs(onObject, aliasResultAs, perform, usingMember, thatIt, arg0, arg1, arg2, arg3, arg4);
-    }
-
-    /**
-     * With <tt>protected</tt> visibility so that it can be called by custom
-     * methods if required.
-     */
-    protected String usingIsisViewerThatArgsVarargs(final String onObject, final String aliasResultAs, final String perform, final String usingMember, final String thatIt, final String arg0, final String... remainingArgs) {
-        return usingIsisViewerThatArgsVarargsNormalized(StringUtils.normalized(onObject), StringUtils.normalized(aliasResultAs), StringUtils.normalized(perform), StringUtils.normalized(usingMember), StringUtils.normalized(thatIt), StringUtils.normalized(arg0), StringUtils.normalized(remainingArgs));
-    }
-
-    private String usingIsisViewerThatArgsVarargsNormalized(final String onObject, final String aliasResultAs, final String perform, final String usingMember, final String thatIt, final String arg0, final String... remainingArgs) {
-        if (executingInline()) {
-            usingIsisViewer = new UsingIsisViewerForConcordion(getScenario().getAliasRegistry(), getScenario().getDeploymentType(), getScenario().getDateParser(), Perform.Mode.TEST);
-            usingIsisViewer.executeHeader(onObject, aliasResultAs, perform, usingMember, thatIt, arg0, remainingArgs);
-            return usingIsisViewer.executeRow(onObject, aliasResultAs, perform, usingMember, thatIt, arg0, remainingArgs);
-        } else {
-            if (executingTableHeader()) {
-                usingIsisViewer = new UsingIsisViewerForConcordion(getScenario().getAliasRegistry(), getScenario().getDeploymentType(), getScenario().getDateParser(), Perform.Mode.TEST);
-                return usingIsisViewer.executeHeader(onObject, aliasResultAs, perform, usingMember, thatIt, arg0, remainingArgs);
-            } else {
-                return usingIsisViewer.executeRow(onObject, aliasResultAs, perform, usingMember, thatIt, arg0, remainingArgs);
-            }
-        }
-    }
-
-    // ////////////////////////////////////////////////////////////////////////
-    // check collection
-    // ////////////////////////////////////////////////////////////////////////
-
-    public String checkCollectionIsEmpty(final String listAlias) {
-        return new CheckCollectionContentsForConcordion(getScenario().getAliasRegistry(), StringUtils.normalized(listAlias)).isEmpty();
-    }
-
-    public String checkCollectionIsNotEmpty(final String listAlias) {
-        return new CheckCollectionContentsForConcordion(getScenario().getAliasRegistry(), StringUtils.normalized(listAlias)).isNotEmpty();
-    }
-
-    public String checkCollectionContains(final String listAlias, final String alias) {
-        return new CheckCollectionContentsForConcordion(getScenario().getAliasRegistry(), StringUtils.normalized(listAlias)).contains(StringUtils.normalized(alias));
-    }
-
-    public String checkCollectionDoesNotContain(final String listAlias, final String alias) {
-        return new CheckCollectionContentsForConcordion(getScenario().getAliasRegistry(), StringUtils.normalized(listAlias)).doesNotContain(StringUtils.normalized(alias));
-    }
-
-    public String checkCollectionSize(final String listAlias, final int size) {
-        return new CheckCollectionContentsForConcordion(getScenario().getAliasRegistry(), StringUtils.normalized(listAlias)).assertSize(size);
-    }
-
-    // ////////////////////////////////////////////////////////////////////////
-    // check list
-    // ////////////////////////////////////////////////////////////////////////
-
-    private CheckListForConcordion checkList;
-
-    public String checkList(final String listAlias, final String title) {
-        if (executingTable()) {
-            if (executingTableHeader()) {
-                checkList = new CheckListForConcordion(getScenario().getAliasRegistry(), listAlias);
-                return checkList.executeHeader(title);
-            } else {
-                return checkList.executeRow(title);
-            }
-        } else {
-            checkList = new CheckListForConcordion(getScenario().getAliasRegistry(), listAlias);
-            checkList.executeHeader(title);
-            return checkList.executeRow(title);
-        }
-    }
-
-    // ////////////////////////////////////////////////////////////////////////
-    // getListContents() (for verifyRow)
-    // ////////////////////////////////////////////////////////////////////////
-
-    public Iterable<Object> getListContents(final String listAlias) {
-        final ObjectAdapter listAdapter = getScenario().getAliasRegistry().getAliased(StringUtils.normalized(listAlias));
-        if (listAdapter == null) {
-            return Collections.emptyList();
-        }
-        final CollectionFacet facet = listAdapter.getSpecification().getFacet(CollectionFacet.class);
-        if (facet == null) {
-            return Collections.emptyList();
-        }
-        final Iterable<ObjectAdapter> objectAdapters = facet.iterable(listAdapter);
-        return Iterables.transform(objectAdapters, new Function<ObjectAdapter, Object>() {
-
-            @Override
-            public Object apply(final ObjectAdapter from) {
-                return from.getObject();
-            }
-        });
-    }
-
-    // ////////////////////////////////////////////////////////////////////////
-    // alias items in list
-    // ////////////////////////////////////////////////////////////////////////
-
-    private AliasItemsInListForConcordion aliasItemsInList;
-
-    public String aliasItemsInList(final String listAlias, final String title, final String aliasAs) {
-        return aliasItemsInList(listAlias, title, null, aliasAs);
-    }
-
-    public String aliasItemsInList(final String listAlias, final String title, final String type, final String aliasAs) {
-        aliasItemsInList = new AliasItemsInListForConcordion(getScenario().getAliasRegistry(), StringUtils.normalized(listAlias));
-        return aliasItemsInList.execute(StringUtils.normalized(aliasAs), StringUtils.normalized(title), StringUtils.normalized(type));
-    }
-
-    private boolean executingTableHeader() {
-        return executingTable() && IsisExecuteCommandWithHeader.tableRow.get() == IsisExecuteCommandWithHeader.TableRow.HEADER;
-    }
-
-    private boolean executingTable() {
-        final IsisExecuteCommandWithHeader.Context context = IsisExecuteCommandWithHeader.context.get();
-        return context == IsisExecuteCommandWithHeader.Context.TABLE;
-    }
-
-    private boolean executingInline() {
-        return !executingTable();
-    }
-
-    // ////////////////////////////////////////////////////////////////////////
-    // run viewer
-    // ////////////////////////////////////////////////////////////////////////
-
-    public void runViewer() {
-        getScenario().runViewer();
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/concordion/IsisExecuteCommandWithHeader.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/concordion/IsisExecuteCommandWithHeader.java b/component/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/concordion/IsisExecuteCommandWithHeader.java
deleted file mode 100644
index 63decb1..0000000
--- a/component/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/concordion/IsisExecuteCommandWithHeader.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.concordion.internal.concordion;
-
-import org.concordion.api.CommandCall;
-import org.concordion.api.Evaluator;
-import org.concordion.api.ResultRecorder;
-import org.concordion.internal.Row;
-import org.concordion.internal.TableSupport;
-import org.concordion.internal.command.ExecuteCommand;
-
-/**
- * Handles tables slightly differently from Concordion's usual strategy.
- * 
- * <p>
- * Specifically, it will call execute for the header row as well as for the body
- * rows. This is required in order to set up the bindings of the column names to
- * the positions.
- */
-public class IsisExecuteCommandWithHeader extends ExecuteCommand {
-
-    public static enum Context {
-        TABLE, INLINE
-    }
-
-    public static enum TableRow {
-        HEADER, BODY
-    }
-
-    /**
-     * Provides a mechanism for the fixture to determine whether the command is
-     * being executed in the context of a table or inline.
-     */
-    public static ThreadLocal<Context> context = new ThreadLocal<Context>() {
-        @Override
-        protected Context initialValue() {
-            return null;
-        }
-    };
-
-    /**
-     * When executing in a {@link Context#TABLE table context}, provides a
-     * mechanism for the fixture to determine whether the header of a table or
-     * the body is being processed.
-     */
-    public static ThreadLocal<TableRow> tableRow = new ThreadLocal<TableRow>() {
-        @Override
-        protected TableRow initialValue() {
-            return TableRow.BODY;
-        }
-    };
-
-    @Override
-    public void execute(final org.concordion.api.CommandCall commandCall, final Evaluator evaluator, final ResultRecorder resultRecorder) {
-        if (commandCall.getElement().isNamed("table")) {
-            // special handling for tables
-            final Context contextIfAny = context.get();
-            final boolean setContext = contextIfAny == null;
-            if (setContext) {
-                context.set(Context.TABLE);
-            }
-            executeTable(commandCall, evaluator, resultRecorder);
-            if (setContext) {
-                context.set(null);
-            }
-        } else {
-            // basically the same as Concordion's original ExecuteCommand
-            final Context contextIfAny = context.get();
-            final boolean setContext = contextIfAny == null;
-            if (setContext) {
-                context.set(Context.INLINE);
-            }
-            super.execute(commandCall, evaluator, resultRecorder);
-            if (setContext) {
-                context.set(null);
-            }
-        }
-    }
-
-    private void executeTable(final CommandCall commandCall, final Evaluator evaluator, final ResultRecorder resultRecorder) {
-        final TableSupport tableSupport = new TableSupport(commandCall);
-
-        // this is the bit that's different: also execute on the header
-        tableRow.set(TableRow.HEADER);
-        final Row headerRow = tableSupport.getLastHeaderRow();
-        commandCall.setElement(headerRow.getElement());
-        commandCall.execute(evaluator, resultRecorder);
-
-        // the rest is copied from Concordion's original implementation
-        tableRow.set(TableRow.BODY);
-        final Row[] detailRows = tableSupport.getDetailRows();
-        for (final Row detailRow : detailRows) {
-            if (detailRow.getCells().length != tableSupport.getColumnCount()) {
-                throw new RuntimeException("The <table> 'execute' command only supports rows with an equal number of columns.");
-            }
-            commandCall.setElement(detailRow.getElement());
-            tableSupport.copyCommandCallsTo(detailRow);
-            commandCall.execute(evaluator, resultRecorder);
-        }
-        tableRow.set(null);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/AbstractFixture.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/AbstractFixture.java b/component/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/AbstractFixture.java
deleted file mode 100755
index ad226b4..0000000
--- a/component/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/AbstractFixture.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.concordion.internal.fixtures;
-
-public abstract class AbstractFixture<T> {
-
-    private final T peer;
-
-    protected AbstractFixture(final T fixturePeer) {
-        this.peer = fixturePeer;
-    }
-
-    public T getPeer() {
-        return peer;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/AliasItemsInListForConcordion.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/AliasItemsInListForConcordion.java b/component/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/AliasItemsInListForConcordion.java
deleted file mode 100644
index b535c5f..0000000
--- a/component/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/AliasItemsInListForConcordion.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.concordion.internal.fixtures;
-
-import org.apache.isis.viewer.bdd.common.AliasRegistry;
-import org.apache.isis.viewer.bdd.common.CellBinding;
-import org.apache.isis.viewer.bdd.common.CellBindingDefault;
-import org.apache.isis.viewer.bdd.common.IsisViewerConstants;
-import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
-import org.apache.isis.viewer.bdd.common.ScenarioCellDefault;
-import org.apache.isis.viewer.bdd.common.ScenarioValueException;
-import org.apache.isis.viewer.bdd.common.fixtures.AliasItemsInListPeer;
-
-public class AliasItemsInListForConcordion extends AbstractFixture<AliasItemsInListPeer> {
-
-    public AliasItemsInListForConcordion(final AliasRegistry aliasRegistry, final String listAlias) {
-        this(aliasRegistry, listAlias, CellBindingDefault.builder(IsisViewerConstants.TITLE_NAME, IsisViewerConstants.TITLE_HEAD).build(), CellBindingDefault.builder(IsisViewerConstants.TYPE_NAME, IsisViewerConstants.TYPE_HEAD).optional().build(), CellBindingDefault
-                .builder(IsisViewerConstants.ALIAS_RESULT_NAME, IsisViewerConstants.ALIAS_RESULT_HEAD_SET).autoCreate().build());
-    }
-
-    private AliasItemsInListForConcordion(final AliasRegistry aliasRegistry, final String listAlias, final CellBinding titleBinding, final CellBinding typeBinding, final CellBinding aliasBinding) {
-        super(new AliasItemsInListPeer(aliasRegistry, listAlias, titleBinding, typeBinding, aliasBinding));
-    }
-
-    public String execute(final String aliasAs, final String title, final String type) {
-        final String header = executeHeader(aliasAs, title, type);
-        if (header != null) {
-            return header;
-        }
-
-        final String row = executeRow(aliasAs, title, type);
-        if (row != null) {
-            return row;
-        }
-
-        return "ok"; // ok
-    }
-
-    private String executeHeader(final String alias, final String title, final String type) {
-        try {
-            getPeer().assertIsList();
-        } catch (final ScenarioValueException e) {
-            return e.getMessage();
-        }
-
-        // create bindings
-        getPeer().getTitleBinding().setHeadColumn(0);
-        getPeer().getAliasBinding().setHeadColumn(1);
-
-        if (type != null) {
-            getPeer().getTypeBinding().setHeadColumn(2, new ScenarioCellDefault(type));
-        }
-
-        return null;
-    }
-
-    private String executeRow(final String aliasAs, final String title, final String type) {
-        if (!getPeer().isList()) {
-            return null; // skip
-        }
-
-        captureCurrent(aliasAs, title, type);
-
-        try {
-            getPeer().findAndAlias();
-        } catch (final ScenarioBoundValueException e) {
-            return e.getMessage();
-        }
-
-        return null;
-    }
-
-    private void captureCurrent(final String aliasAs, final String title, final String type) {
-        getPeer().getAliasBinding().captureCurrent(new ScenarioCellDefault(aliasAs));
-        getPeer().getTitleBinding().captureCurrent(new ScenarioCellDefault(title));
-        if (type != null) {
-            getPeer().getTitleBinding().captureCurrent(new ScenarioCellDefault(type));
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/CheckCollectionContentsForConcordion.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/CheckCollectionContentsForConcordion.java b/component/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/CheckCollectionContentsForConcordion.java
deleted file mode 100644
index 7cf7507..0000000
--- a/component/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/CheckCollectionContentsForConcordion.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.concordion.internal.fixtures;
-
-import org.apache.isis.viewer.bdd.common.AliasRegistry;
-import org.apache.isis.viewer.bdd.common.fixtures.CheckCollectionContentsPeer;
-
-public class CheckCollectionContentsForConcordion extends AbstractFixture<CheckCollectionContentsPeer> {
-
-    public CheckCollectionContentsForConcordion(final AliasRegistry aliasRegistry, final String listAlias) {
-        super(new CheckCollectionContentsPeer(aliasRegistry, listAlias));
-    }
-
-    public String contains(final String alias) {
-        if (!getPeer().isValidAlias(alias)) {
-            return "unknown alias '" + alias + "'";
-        }
-        final boolean contains = getPeer().contains(alias);
-        return contains ? "ok" : "does not contain '" + alias + "'";
-    }
-
-    public String doesNotContain(final String alias) {
-        if (!getPeer().isValidAlias(alias)) {
-            return "unknown alias '" + alias + "'";
-        }
-        final boolean doesNotContain = getPeer().doesNotContain(alias);
-        return doesNotContain ? "ok" : "does contain";
-    }
-
-    public String isEmpty() {
-        final boolean isEmpty = getPeer().isEmpty();
-        return isEmpty ? "ok" : "not empty";
-    }
-
-    public String isNotEmpty() {
-        final boolean isNotEmpty = getPeer().isNotEmpty();
-        return isNotEmpty ? "ok" : "empty";
-    }
-
-    public String assertSize(final int size) {
-        final boolean hasSize = getPeer().assertSize(size);
-        return hasSize ? "ok" : "contains " + getPeer().getSize() + " objects";
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/CheckListForConcordion.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/CheckListForConcordion.java b/component/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/CheckListForConcordion.java
deleted file mode 100644
index ed3574c..0000000
--- a/component/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/CheckListForConcordion.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.concordion.internal.fixtures;
-
-import org.apache.isis.viewer.bdd.common.AliasRegistry;
-import org.apache.isis.viewer.bdd.common.CellBindingDefault;
-import org.apache.isis.viewer.bdd.common.ScenarioCell;
-import org.apache.isis.viewer.bdd.common.ScenarioCellDefault;
-import org.apache.isis.viewer.bdd.common.fixtures.CheckListConstants;
-import org.apache.isis.viewer.bdd.common.fixtures.CheckListPeer;
-import org.apache.isis.viewer.bdd.common.fixtures.CheckListPeer.CheckMode;
-
-public class CheckListForConcordion extends AbstractFixture<CheckListPeer> {
-
-    public CheckListForConcordion(final AliasRegistry aliasRegistry, final String listAlias) {
-        super(new CheckListPeer(aliasRegistry, listAlias, CheckMode.NOT_EXACT, titleBinding()));
-    }
-
-    private static CellBindingDefault titleBinding() {
-        return CellBindingDefault.builder(CheckListConstants.TITLE_NAME, CheckListConstants.TITLE_HEAD_SET).ditto().build();
-    }
-
-    public String executeHeader(final String title) {
-        return setupHeader(title);
-    }
-
-    private String setupHeader(final String title) {
-        int colNum = 0;
-        getPeer().getTitleBinding().setHeadColumn(colNum++);
-        return ""; // ok
-    }
-
-    public String executeRow(final String title) {
-
-        setupHeader(title);
-
-        // capture current
-        getPeer().getTitleBinding().captureCurrent(new ScenarioCellDefault(title));
-
-        // execute
-        return checkExists();
-    }
-
-    private String checkExists() {
-        if (!getPeer().findAndAddObject()) {
-            return getTitle() + " not found";
-        }
-        return "ok";
-    }
-
-    private String getTitle() {
-        final ScenarioCell currentCell = getPeer().getTitleBinding().getCurrentCell();
-        return currentCell != null ? currentCell.getText() : "(no title provided)";
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/SetUpObjectsForConcordion.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/SetUpObjectsForConcordion.java b/component/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/SetUpObjectsForConcordion.java
deleted file mode 100755
index 5861cdb..0000000
--- a/component/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/SetUpObjectsForConcordion.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.concordion.internal.fixtures;
-
-import org.apache.isis.viewer.bdd.common.AliasRegistry;
-import org.apache.isis.viewer.bdd.common.CellBinding;
-import org.apache.isis.viewer.bdd.common.CellBindingDefault;
-import org.apache.isis.viewer.bdd.common.IsisViewerConstants;
-import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
-import org.apache.isis.viewer.bdd.common.fixtures.SetUpObjectsPeer;
-
-public class SetUpObjectsForConcordion extends AbstractFixture<SetUpObjectsPeer> {
-
-    public SetUpObjectsForConcordion(final AliasRegistry aliasesRegistry, final String className, final SetUpObjectsPeer.Mode mode) {
-        this(aliasesRegistry, className, mode, CellBindingDefault.builder(IsisViewerConstants.ALIAS_RESULT_NAME, IsisViewerConstants.ALIAS_RESULT_HEAD_SET).autoCreate().build());
-    }
-
-    private SetUpObjectsForConcordion(final AliasRegistry storyFixture, final String className, final SetUpObjectsPeer.Mode mode, final CellBinding aliasBinding) {
-        super(new SetUpObjectsPeer(storyFixture, className, mode, aliasBinding));
-    }
-
-    public String executeHeader(final String alias, final String... propertyNames) {
-
-        // create bindings (there's only one)
-        getPeer().getAliasBinding().setHeadColumn(0);
-
-        // define properties and the alias column
-        int colNum = 0;
-        getPeer().definePropertyOrAlias(alias, colNum++);
-
-        for (final String propertyName : propertyNames) {
-            getPeer().definePropertyOrAlias(propertyName, colNum++);
-        }
-
-        return ""; // ok
-    }
-
-    public String executeRow(final String alias, final String... propertyValues) {
-
-        // set property values and the alis
-        getPeer().addPropertyValueOrAlias(alias);
-        for (final String propertyValue : propertyValues) {
-            getPeer().addPropertyValueOrAlias(propertyValue);
-        }
-
-        // create the object
-        try {
-            getPeer().createObject();
-            return "ok";
-        } catch (final ScenarioBoundValueException ex) {
-            return ex.toString();
-        }
-
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/UsingIsisViewerForConcordion.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/UsingIsisViewerForConcordion.java b/component/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/UsingIsisViewerForConcordion.java
deleted file mode 100644
index 11b916a..0000000
--- a/component/viewer/bdd/concordion/src/main/java/org/apache/isis/viewer/bdd/concordion/internal/fixtures/UsingIsisViewerForConcordion.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.concordion.internal.fixtures;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import com.google.common.collect.Lists;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
-import org.apache.isis.core.runtime.system.DeploymentType;
-import org.apache.isis.viewer.bdd.common.AliasRegistry;
-import org.apache.isis.viewer.bdd.common.CellBinding;
-import org.apache.isis.viewer.bdd.common.CellBindingDefault;
-import org.apache.isis.viewer.bdd.common.IsisViewerConstants;
-import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
-import org.apache.isis.viewer.bdd.common.ScenarioCell;
-import org.apache.isis.viewer.bdd.common.ScenarioCellDefault;
-import org.apache.isis.viewer.bdd.common.fixtures.UsingIsisViewerPeer;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.Perform;
-import org.apache.isis.viewer.bdd.common.parsers.DateParser;
-
-public class UsingIsisViewerForConcordion extends AbstractFixture<UsingIsisViewerPeer> {
-
-    public UsingIsisViewerForConcordion(final AliasRegistry aliasesRegistry, final DeploymentType deploymentType, final DateParser dateParser, final Perform.Mode mode) {
-        this(aliasesRegistry, deploymentType, dateParser, mode, CellBindingDefault.builder(IsisViewerConstants.ON_OBJECT_NAME, IsisViewerConstants.ON_OBJECT_HEAD_SET).ditto().build(), CellBindingDefault.builder(IsisViewerConstants.ALIAS_RESULT_NAME, IsisViewerConstants.ALIAS_RESULT_HEAD_SET)
-                .optional().build(), CellBindingDefault.builder(IsisViewerConstants.PERFORM_NAME, IsisViewerConstants.PERFORM_HEAD_SET).ditto().build(), CellBindingDefault.builder(IsisViewerConstants.ON_MEMBER_NAME, IsisViewerConstants.ON_MEMBER_HEAD_SET).optional().build(), CellBindingDefault
-                .builder(IsisViewerConstants.THAT_IT_NAME, IsisViewerConstants.THAT_IT_HEAD_SET).ditto().optional().build(), CellBindingDefault.builder(IsisViewerConstants.WITH_ARGUMENTS_NAME, IsisViewerConstants.WITH_ARGUMENTS_HEAD_SET).optional().build());
-    }
-
-    private UsingIsisViewerForConcordion(final AliasRegistry aliasesRegistry, final DeploymentType deploymentType, final DateParser dateParser, final Perform.Mode mode, final CellBinding onObjectBinding, final CellBinding aliasResultAsBinding, final CellBinding performBinding,
-            final CellBinding onMemberBinding, final CellBinding thatItBinding, final CellBinding arg0Binding) {
-        super(new UsingIsisViewerPeer(aliasesRegistry, deploymentType, dateParser, mode, onObjectBinding, aliasResultAsBinding, performBinding, onMemberBinding, thatItBinding, arg0Binding));
-    }
-
-    public String executeHeader(final String onObject, final String aliasResultAs, final String perform, final String usingMember, final String thatIt, final String arg0, final String... remainingArgs) {
-
-        return setupHeader(onObject, aliasResultAs, perform, usingMember, thatIt, arg0);
-    }
-
-    private String setupHeader(final String onObject, final String aliasResultAs, final String perform, final String usingMember, final String thatIt, final String arg0) {
-        int colNum = 0;
-        getPeer().getOnObjectBinding().setHeadColumn(colNum++);
-        getPeer().getAliasResultAsBinding().setHeadColumn(colNum++);
-        getPeer().getPerformBinding().setHeadColumn(colNum++);
-        getPeer().getOnMemberBinding().setHeadColumn(colNum++);
-        if (thatIt != null) {
-            getPeer().getThatItBinding().setHeadColumn(colNum++);
-        }
-        if (arg0 != null) {
-            getPeer().getArg0Binding().setHeadColumn(colNum++);
-        }
-
-        return ""; // ok
-    }
-
-    public String executeRow(final String onObject, final String aliasResultAs, final String perform, final String usingMember, final String thatIt, final String arg0, final String... remainingArgs) {
-
-        setupHeader(onObject, aliasResultAs, perform, usingMember, thatIt, arg0);
-
-        final List<String> argumentCells = new ArrayList<String>();
-
-        // capture current
-        getPeer().getOnObjectBinding().captureCurrent(new ScenarioCellDefault(onObject));
-        getPeer().getAliasResultAsBinding().captureCurrent(new ScenarioCellDefault(aliasResultAs));
-        getPeer().getPerformBinding().captureCurrent(new ScenarioCellDefault(perform));
-        getPeer().getOnMemberBinding().captureCurrent(new ScenarioCellDefault(usingMember));
-        if (getPeer().getThatItBinding().isFound()) {
-            getPeer().getThatItBinding().captureCurrent(new ScenarioCellDefault(thatIt));
-        }
-        if (getPeer().getArg0Binding().isFound()) {
-            getPeer().getArg0Binding().captureCurrent(new ScenarioCellDefault(arg0));
-            argumentCells.add(arg0);
-        }
-        for (final String arg : remainingArgs) {
-            argumentCells.add(arg);
-        }
-
-        // execute
-        try {
-            execute(argumentCells);
-        } catch (final ScenarioBoundValueException ex) {
-            return ex.getMessage();
-        }
-
-        return "ok";
-    }
-
-    private void execute(final List<String> argumentCells) throws ScenarioBoundValueException {
-
-        final ObjectAdapter onAdapter = getPeer().validateOnObject();
-        final String aliasAs = getPeer().validateAliasAs();
-        final Perform performCommand = getPeer().validatePerform();
-
-        ObjectMember objectMember = null;
-        if (performCommand.requiresMember()) {
-            objectMember = getPeer().validateOnMember(onAdapter);
-        }
-
-        getPeer().performCommand(onAdapter, aliasAs, objectMember, performCommand, asValues(argumentCells));
-    }
-
-    private static List<ScenarioCell> asValues(final List<String> argumentCells) {
-        final List<ScenarioCell> storyValues = Lists.newArrayList();
-        for (final String arg : argumentCells) {
-            storyValues.add(new ScenarioCellDefault(arg));
-        }
-        return storyValues;
-    }
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/concordion/src/site/apt/index.apt
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/concordion/src/site/apt/index.apt b/component/viewer/bdd/concordion/src/site/apt/index.apt
deleted file mode 100644
index ebc04d1..0000000
--- a/component/viewer/bdd/concordion/src/site/apt/index.apt
+++ /dev/null
@@ -1,29 +0,0 @@
-~~  Licensed to the Apache Software Foundation (ASF) under one
-~~  or more contributor license agreements.  See the NOTICE file
-~~  distributed with this work for additional information
-~~  regarding copyright ownership.  The ASF licenses this file
-~~  to you under the Apache License, Version 2.0 (the
-~~  "License"); you may not use this file except in compliance
-~~  with the License.  You may obtain a copy of the License at
-~~
-~~        http://www.apache.org/licenses/LICENSE-2.0
-~~
-~~  Unless required by applicable law or agreed to in writing,
-~~  software distributed under the License is distributed on an
-~~  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-~~  KIND, either express or implied.  See the License for the
-~~  specific language governing permissions and limitations
-~~  under the License.
-
-
-
-BDD Concordion support
-
- The <concordion> module provides an integration between the Isis (via {{{../bdd-common/index.html}common}}
- and the {{{http://concordion.org}Concordion}} framework itself.
- 
-Further Info
-  
-  See this module's {{{./apidocs/index.html}Javadoc}} and the 
-  {{{../docbkx/html/guide/isis-bdd-integration.html}user guide}} for more information.
- 

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/concordion/src/site/apt/jottings.apt
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/concordion/src/site/apt/jottings.apt b/component/viewer/bdd/concordion/src/site/apt/jottings.apt
deleted file mode 100644
index c5d1200..0000000
--- a/component/viewer/bdd/concordion/src/site/apt/jottings.apt
+++ /dev/null
@@ -1,24 +0,0 @@
-~~  Licensed to the Apache Software Foundation (ASF) under one
-~~  or more contributor license agreements.  See the NOTICE file
-~~  distributed with this work for additional information
-~~  regarding copyright ownership.  The ASF licenses this file
-~~  to you under the Apache License, Version 2.0 (the
-~~  "License"); you may not use this file except in compliance
-~~  with the License.  You may obtain a copy of the License at
-~~
-~~        http://www.apache.org/licenses/LICENSE-2.0
-~~
-~~  Unless required by applicable law or agreed to in writing,
-~~  software distributed under the License is distributed on an
-~~  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-~~  KIND, either express or implied.  See the License for the
-~~  specific language governing permissions and limitations
-~~  under the License.
-
-
-
-Jottings
- 
-  This page is to capture any random jottings relating to this module prior 
-  to being moved into formal documentation. 
- 

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/concordion/src/site/site.xml
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/concordion/src/site/site.xml b/component/viewer/bdd/concordion/src/site/site.xml
deleted file mode 100644
index 5a26b07..0000000
--- a/component/viewer/bdd/concordion/src/site/site.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-         http://www.apache.org/licenses/LICENSE-2.0
-         
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-<project>
-
-	<body>
-		<breadcrumbs>
-			<item name="Concordion" href="index.html"/>
-		</breadcrumbs>
-
-		<menu name="BDD Concordion">
-			<item name="About" href="index.html" />
-            <item name="Jottings" href="jottings.html" />
-		</menu>
-
-        <menu name="BDD Modules">
-            <item name="Common" href="../bdd-common/index.html" />
-            <item name="Concordion" href="../bdd-concordion/index.html" />
-        </menu>
-
-		<menu name="Maven Reports" ref="reports" />
-	</body>
-
-</project>

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/pom.xml
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/pom.xml b/component/viewer/bdd/pom.xml
deleted file mode 100644
index d8b31fb..0000000
--- a/component/viewer/bdd/pom.xml
+++ /dev/null
@@ -1,200 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-         http://www.apache.org/licenses/LICENSE-2.0
-         
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-	<parent>
-		<groupId>org.apache.isis.core</groupId>
-		<artifactId>isis</artifactId>
-        <version>1.3.0-SNAPSHOT</version>
-		<relativePath>../../../core/pom.xml</relativePath>
-	</parent>
-
-    <groupId>org.apache.isis.viewer</groupId>
-    <artifactId>isis-viewer-bdd</artifactId>
-    <version>1.0.0-SNAPSHOT</version>
-    
-    <name>Isis BDD Viewer</name>
-
-    <packaging>pom</packaging>
-
-    <properties>
-        <siteBaseDir>.</siteBaseDir>
-        <relativeUrl/>
-
-        <docbkxGuideTitle>Apache Isis BDD Testing Guide</docbkxGuideTitle>
-        <docbkxGuideSubTitle>Acceptance Testing using BDD Frameworks</docbkxGuideSubTitle>
-        <docbkxGuideName>isis-bdd-integration</docbkxGuideName>
-        
-        <isis-security-file.version>1.0.2-SNAPSHOT</isis-security-file.version>
-    </properties>
-
-    <!-- used in Site generation for relative references. -->
-    <url>http://isis.apache.org/${relativeUrl}</url>
-
-    <build>
-		<pluginManagement>
-			<plugins>
-                <!-- Apache Release Audit Tool -->
-                <plugin>
-                    <groupId>org.apache.rat</groupId>
-                    <artifactId>apache-rat-plugin</artifactId>
-                    <version>0.8</version>
-	                <configuration>
-	                    <excludes>
-	                    	<!-- 
-	                    	overriding inherited excludes from oia.core:isis 
-	                    	with a more specific set for this component
-	                    	 -->
-	                        <exclude>**/target/**</exclude>
-	                        <exclude>**/target-ide/**</exclude>
-
-	                        <exclude>**/*.project</exclude>
-	                        <exclude>**/.classpath</exclude>
-	                        <exclude>**/.settings/**</exclude>
-	                    </excludes>
-                    </configuration>
-	            </plugin>
-			</plugins>
-		</pluginManagement>
-        <plugins>
-            <plugin>
-                <groupId>com.agilejava.docbkx</groupId>
-                <artifactId>docbkx-maven-plugin</artifactId>
-                <inherited>false</inherited>
-            </plugin>
-
-
-            <plugin>
-                <artifactId>maven-remote-resources-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>process-remote-resources</id>
-                        <goals>
-                            <goal>process</goal>
-                        </goals>
-                        <configuration>
-                            <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>
-                            <appendedResourcesDirectory>${basedir}/${siteBaseDir}/src/main/appended-resources</appendedResourcesDirectory>
-                            <supplementalModels>
-                                <supplementalModel>supplemental-models.xml</supplementalModel>
-                            </supplementalModels>
-                            <resourceBundles>
-                                <resourceBundle>org.apache:apache-jar-resource-bundle:1.4</resourceBundle>
-                            </resourceBundles>
-                            <properties>
-                                <projectTimespan>2010~2013</projectTimespan>
-                                <postDepListText>
-The above (auto-generated) list aggregates the dependencies (either directly
-or transitively) of all the modules that make up Apache Isis. You can use 
-mvn dependency:list or mvn dependency:tree to view dependencies by submodule.
-
-In addition, Isis includes a copy of JQuery core.  This is licensed under
-the MIT license [1].
-
-Note also that the BDD Viewer module [org.apache.isis.viewer:isis-viewer-bdd-concordion]
-has an optional dependency on Concordion [2], which in turn depends upon
-XOM [3]. XOM is licensed under LGPL, which is a non-eligible 'category-X'
-license [4]. This transitive dependency to XOM has therefore been excluded.
-
-To use Isis' BDD Viewer, end-users must explicitly add in the XOM dependency
-in their own POMs.  The application generated by the Isis quickstart
-archetype includes this explicit dependency.
-
-[1] http://jquery.org/license/
-[2] http://concordion.org
-[3] http://www.xom.nu/
-[4] http://www.apache.org/legal/resolved.html#category-x
-                        </postDepListText>
-                            </properties>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-
-
-        </plugins>
-    </build>
-
-    <dependencyManagement>
-    	<dependencies>
-
-	    	<!-- for benefit of application developers, using scope=import -->
-
-            <!-- BDD Viewer -->
-            <dependency>
-			    <groupId>org.apache.isis.viewer</groupId>
-                <artifactId>isis-viewer-bdd-common</artifactId>
-                <version>1.0.0-SNAPSHOT</version>
-            </dependency>
-            <dependency>
-			    <groupId>org.apache.isis.viewer</groupId>
-                <artifactId>isis-viewer-bdd-common</artifactId>
-                <version>1.0.0-SNAPSHOT</version>
-                <scope>test</scope>
-                <type>test-jar</type>
-            </dependency>
-
-            <dependency>
-			    <groupId>org.apache.isis.viewer</groupId>
-                <artifactId>isis-viewer-bdd-concordion</artifactId>
-                <version>1.0.0-SNAPSHOT</version>
-            </dependency>
-            <dependency>
-			    <groupId>org.apache.isis.viewer</groupId>
-                <artifactId>isis-viewer-bdd-concordion</artifactId>
-                <version>1.0.0-SNAPSHOT</version>
-                <scope>test</scope>
-                <type>test-jar</type>
-            </dependency>
-
-
-            <dependency>
-                <groupId>org.apache.isis.security</groupId>
-                <artifactId>isis-security-file</artifactId>
-                <version>${isis-security-file.version}</version>
-            </dependency>
-        </dependencies>
-    </dependencyManagement>
-
-
-    <modules>
-	    <module>common</module>
-	    <module>concordion</module>
-	    <module>tck</module>
-	</modules>
-    
-    <profiles>
-        <profile>
-            <id>bdd-all</id>
-            <activation>
-                <property>
-                    <name>bdd</name>
-                    <value>all</value>
-                </property>
-            </activation>
-            <modules>
-                <module>common</module>
-                <module>concordion</module>
-            </modules>
-        </profile>
-    </profiles>
-
-</project>

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/src/docbkx/guide/images/xmlmind-concordion-attributes-1.png
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/src/docbkx/guide/images/xmlmind-concordion-attributes-1.png b/component/viewer/bdd/src/docbkx/guide/images/xmlmind-concordion-attributes-1.png
deleted file mode 100644
index 1ffad3b..0000000
Binary files a/component/viewer/bdd/src/docbkx/guide/images/xmlmind-concordion-attributes-1.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/src/docbkx/guide/images/xmlmind-concordion-attributes-2.png
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/src/docbkx/guide/images/xmlmind-concordion-attributes-2.png b/component/viewer/bdd/src/docbkx/guide/images/xmlmind-concordion-attributes-2.png
deleted file mode 100644
index 02d8282..0000000
Binary files a/component/viewer/bdd/src/docbkx/guide/images/xmlmind-concordion-attributes-2.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/src/docbkx/guide/images/xmlmind-css.png
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/src/docbkx/guide/images/xmlmind-css.png b/component/viewer/bdd/src/docbkx/guide/images/xmlmind-css.png
deleted file mode 100644
index 3a982ad..0000000
Binary files a/component/viewer/bdd/src/docbkx/guide/images/xmlmind-css.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/src/docbkx/guide/images/xmlmind-delete.png
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/src/docbkx/guide/images/xmlmind-delete.png b/component/viewer/bdd/src/docbkx/guide/images/xmlmind-delete.png
deleted file mode 100644
index e67091a..0000000
Binary files a/component/viewer/bdd/src/docbkx/guide/images/xmlmind-delete.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/src/docbkx/guide/images/xmlmind-editinsert.png
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/src/docbkx/guide/images/xmlmind-editinsert.png b/component/viewer/bdd/src/docbkx/guide/images/xmlmind-editinsert.png
deleted file mode 100644
index e5b9e50..0000000
Binary files a/component/viewer/bdd/src/docbkx/guide/images/xmlmind-editinsert.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/src/docbkx/guide/images/xmlmind-editwrap-result.png
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/src/docbkx/guide/images/xmlmind-editwrap-result.png b/component/viewer/bdd/src/docbkx/guide/images/xmlmind-editwrap-result.png
deleted file mode 100644
index dab7e9c..0000000
Binary files a/component/viewer/bdd/src/docbkx/guide/images/xmlmind-editwrap-result.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/src/docbkx/guide/images/xmlmind-editwrap.png
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/src/docbkx/guide/images/xmlmind-editwrap.png b/component/viewer/bdd/src/docbkx/guide/images/xmlmind-editwrap.png
deleted file mode 100644
index 0d430db..0000000
Binary files a/component/viewer/bdd/src/docbkx/guide/images/xmlmind-editwrap.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/src/docbkx/guide/images/xmlmind-emptytable.png
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/src/docbkx/guide/images/xmlmind-emptytable.png b/component/viewer/bdd/src/docbkx/guide/images/xmlmind-emptytable.png
deleted file mode 100644
index c58d33d..0000000
Binary files a/component/viewer/bdd/src/docbkx/guide/images/xmlmind-emptytable.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/src/docbkx/guide/images/xmlmind-headrow.png
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/src/docbkx/guide/images/xmlmind-headrow.png b/component/viewer/bdd/src/docbkx/guide/images/xmlmind-headrow.png
deleted file mode 100644
index 6c1a32d..0000000
Binary files a/component/viewer/bdd/src/docbkx/guide/images/xmlmind-headrow.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/src/docbkx/guide/images/xmlmind-image-1.png
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/src/docbkx/guide/images/xmlmind-image-1.png b/component/viewer/bdd/src/docbkx/guide/images/xmlmind-image-1.png
deleted file mode 100644
index dc7244d..0000000
Binary files a/component/viewer/bdd/src/docbkx/guide/images/xmlmind-image-1.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/src/docbkx/guide/images/xmlmind-image-2.png
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/src/docbkx/guide/images/xmlmind-image-2.png b/component/viewer/bdd/src/docbkx/guide/images/xmlmind-image-2.png
deleted file mode 100644
index b0567fd..0000000
Binary files a/component/viewer/bdd/src/docbkx/guide/images/xmlmind-image-2.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/src/docbkx/guide/images/xmlmind-insert-heading.png
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/src/docbkx/guide/images/xmlmind-insert-heading.png b/component/viewer/bdd/src/docbkx/guide/images/xmlmind-insert-heading.png
deleted file mode 100644
index d2ebe36..0000000
Binary files a/component/viewer/bdd/src/docbkx/guide/images/xmlmind-insert-heading.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/src/docbkx/guide/images/xmlmind-insert.png
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/src/docbkx/guide/images/xmlmind-insert.png b/component/viewer/bdd/src/docbkx/guide/images/xmlmind-insert.png
deleted file mode 100644
index a72fbd1..0000000
Binary files a/component/viewer/bdd/src/docbkx/guide/images/xmlmind-insert.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/src/docbkx/guide/images/xmlmind-knowingwhereyouare.png
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/src/docbkx/guide/images/xmlmind-knowingwhereyouare.png b/component/viewer/bdd/src/docbkx/guide/images/xmlmind-knowingwhereyouare.png
deleted file mode 100644
index 17a29d2..0000000
Binary files a/component/viewer/bdd/src/docbkx/guide/images/xmlmind-knowingwhereyouare.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/src/docbkx/guide/images/xmlmind-newparas.png
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/src/docbkx/guide/images/xmlmind-newparas.png b/component/viewer/bdd/src/docbkx/guide/images/xmlmind-newparas.png
deleted file mode 100644
index efdde5f..0000000
Binary files a/component/viewer/bdd/src/docbkx/guide/images/xmlmind-newparas.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/src/docbkx/guide/images/xmlmind-opendoc.png
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/src/docbkx/guide/images/xmlmind-opendoc.png b/component/viewer/bdd/src/docbkx/guide/images/xmlmind-opendoc.png
deleted file mode 100644
index 70fd12d..0000000
Binary files a/component/viewer/bdd/src/docbkx/guide/images/xmlmind-opendoc.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/src/docbkx/guide/images/xmlmind-selectingcontent-1.png
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/src/docbkx/guide/images/xmlmind-selectingcontent-1.png b/component/viewer/bdd/src/docbkx/guide/images/xmlmind-selectingcontent-1.png
deleted file mode 100644
index 4a1f748..0000000
Binary files a/component/viewer/bdd/src/docbkx/guide/images/xmlmind-selectingcontent-1.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/src/docbkx/guide/images/xmlmind-selectingcontent-2.png
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/src/docbkx/guide/images/xmlmind-selectingcontent-2.png b/component/viewer/bdd/src/docbkx/guide/images/xmlmind-selectingcontent-2.png
deleted file mode 100644
index 71df170..0000000
Binary files a/component/viewer/bdd/src/docbkx/guide/images/xmlmind-selectingcontent-2.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/src/docbkx/guide/images/xmlmind-viewleft.png
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/src/docbkx/guide/images/xmlmind-viewleft.png b/component/viewer/bdd/src/docbkx/guide/images/xmlmind-viewleft.png
deleted file mode 100644
index 2c42edb..0000000
Binary files a/component/viewer/bdd/src/docbkx/guide/images/xmlmind-viewleft.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/src/docbkx/guide/images/xmlmind-viewraw.png
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/src/docbkx/guide/images/xmlmind-viewraw.png b/component/viewer/bdd/src/docbkx/guide/images/xmlmind-viewraw.png
deleted file mode 100644
index 980e793..0000000
Binary files a/component/viewer/bdd/src/docbkx/guide/images/xmlmind-viewraw.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/src/docbkx/guide/images/xmlmind-xhtmlmenu.png
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/src/docbkx/guide/images/xmlmind-xhtmlmenu.png b/component/viewer/bdd/src/docbkx/guide/images/xmlmind-xhtmlmenu.png
deleted file mode 100644
index 7763e35..0000000
Binary files a/component/viewer/bdd/src/docbkx/guide/images/xmlmind-xhtmlmenu.png and /dev/null differ


[06/19] ISIS-463: mothballing BDD viewer

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/action/ArgumentSetValid.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/action/ArgumentSetValid.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/action/ArgumentSetValid.java
new file mode 100644
index 0000000..666b2e3
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/action/ArgumentSetValid.java
@@ -0,0 +1,69 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.action;
+
+import java.util.List;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.consent.Consent;
+import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
+import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
+import org.apache.isis.viewer.bdd.common.CellBinding;
+import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
+import org.apache.isis.viewer.bdd.common.ScenarioCell;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.ThatSubcommandAbstract;
+
+public class ArgumentSetValid extends ThatSubcommandAbstract {
+
+    public ArgumentSetValid() {
+        super("is valid for", "is valid", "valid");
+    }
+
+    // TODO: a lot of duplication with InvokeAction; simplify somehow?
+    @Override
+    public ObjectAdapter that(final PerformContext performContext) throws ScenarioBoundValueException {
+
+        final ObjectAdapter onAdapter = performContext.getOnAdapter();
+        final ObjectMember nakedObjectMember = performContext.getObjectMember();
+        final CellBinding onMemberBinding = performContext.getPeer().getOnMemberBinding();
+        final List<ScenarioCell> argumentCells = performContext.getArgumentCells();
+
+        final ObjectAction nakedObjectAction = (ObjectAction) nakedObjectMember;
+        final int parameterCount = nakedObjectAction.getParameterCount();
+        final boolean isContributedOneArgAction = nakedObjectAction.isContributed() && parameterCount == 1;
+
+        if (isContributedOneArgAction) {
+            return null;
+        }
+
+        // lookup arguments
+        final ObjectAdapter[] proposedArguments = performContext.getPeer().getAdapters(onAdapter, nakedObjectAction, onMemberBinding, argumentCells);
+
+        // validate arguments
+        final Consent argSetValid = nakedObjectAction.isProposedArgumentSetValid(onAdapter, proposedArguments);
+        if (argSetValid.isVetoed()) {
+            throw ScenarioBoundValueException.current(onMemberBinding, argSetValid.getReason());
+        }
+
+        // execute
+        return null;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/collections/Containment.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/collections/Containment.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/collections/Containment.java
new file mode 100644
index 0000000..ba485fb
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/collections/Containment.java
@@ -0,0 +1,67 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.collections;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
+import org.apache.isis.viewer.bdd.common.CellBinding;
+import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
+import org.apache.isis.viewer.bdd.common.ScenarioCell;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.AssertsContainment;
+
+public class Containment extends ThatAbstract {
+
+    private final AssertsContainment assertion;
+
+    public Containment(final AssertsContainment assertion) {
+        super(assertion.getKey());
+        this.assertion = assertion;
+    }
+
+    @Override
+    protected void doThat(final PerformContext performContext, final Iterable<ObjectAdapter> collection) throws ScenarioBoundValueException {
+
+        final ObjectMember nakedObjectMember = performContext.getObjectMember();
+        final CellBinding thatBinding = performContext.getPeer().getThatItBinding();
+        final CellBinding arg0Binding = performContext.getPeer().getArg0Binding();
+
+        if (!arg0Binding.isFound()) {
+            throw ScenarioBoundValueException.current(thatBinding, "(requires argument)");
+        }
+
+        final ScenarioCell arg0Cell = arg0Binding.getCurrentCell();
+
+        final ObjectAdapter containedAdapter = performContext.getPeer().getAdapter(null, nakedObjectMember.getSpecification(), arg0Binding, arg0Cell);
+
+        boolean contains = false;
+        for (final ObjectAdapter eachAdapter : collection) {
+            if (containedAdapter == eachAdapter) {
+                contains = true;
+                break;
+            }
+        }
+
+        if (!assertion.isSatisfiedBy(contains)) {
+            throw ScenarioBoundValueException.current(arg0Binding, assertion.getErrorMsgIfNotSatisfied());
+        }
+
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/collections/Emptiness.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/collections/Emptiness.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/collections/Emptiness.java
new file mode 100644
index 0000000..e07ad75
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/collections/Emptiness.java
@@ -0,0 +1,51 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.collections;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.viewer.bdd.common.CellBinding;
+import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.AssertsEmpty;
+
+public class Emptiness extends ThatAbstract {
+
+    private final AssertsEmpty assertion;
+
+    public Emptiness(final AssertsEmpty assertion) {
+        super(assertion.getKey());
+        this.assertion = assertion;
+    }
+
+    @Override
+    protected void doThat(final PerformContext performContext, final Iterable<ObjectAdapter> collection) throws ScenarioBoundValueException {
+
+        boolean empty = true;
+        for (@SuppressWarnings("unused")
+        final ObjectAdapter eachObject : collection) {
+            empty = false;
+        }
+
+        if (!assertion.isSatisfiedBy(empty)) {
+            final CellBinding thatItBinding = performContext.getPeer().getThatItBinding();
+            throw ScenarioBoundValueException.current(thatItBinding, assertion.getErrorMsgIfNotSatisfied());
+        }
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/collections/ProposedAddTo.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/collections/ProposedAddTo.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/collections/ProposedAddTo.java
new file mode 100644
index 0000000..95cfd4c
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/collections/ProposedAddTo.java
@@ -0,0 +1,43 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.collections;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.consent.Consent;
+import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.AssertsValidity;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.ProposedArgumentValidityAbstract;
+
+public class ProposedAddTo extends ProposedArgumentValidityAbstract {
+
+    public ProposedAddTo(final AssertsValidity assertion) {
+        super(assertion);
+    }
+
+    @Override
+    protected Consent determineConsent(final PerformContext performContext, final ObjectAdapter toValidateAdapter) {
+
+        final ObjectAdapter onAdapter = performContext.getOnAdapter();
+        final OneToManyAssociation otma = (OneToManyAssociation) performContext.getObjectMember();
+
+        return otma.isValidToAdd(onAdapter, toValidateAdapter);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/collections/ProposedRemoveFrom.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/collections/ProposedRemoveFrom.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/collections/ProposedRemoveFrom.java
new file mode 100644
index 0000000..dc03f81
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/collections/ProposedRemoveFrom.java
@@ -0,0 +1,43 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.collections;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.consent.Consent;
+import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.AssertsValidity;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.ProposedArgumentValidityAbstract;
+
+public class ProposedRemoveFrom extends ProposedArgumentValidityAbstract {
+
+    public ProposedRemoveFrom(final AssertsValidity assertion) {
+        super(assertion);
+    }
+
+    @Override
+    protected Consent determineConsent(final PerformContext performContext, final ObjectAdapter toValidateAdapter) {
+
+        final ObjectAdapter onAdapter = performContext.getOnAdapter();
+        final OneToManyAssociation otma = (OneToManyAssociation) performContext.getObjectMember();
+
+        return otma.isValidToRemove(onAdapter, toValidateAdapter);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/collections/Size.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/collections/Size.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/collections/Size.java
new file mode 100644
index 0000000..49ce0b0
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/collections/Size.java
@@ -0,0 +1,69 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.collections;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.viewer.bdd.common.CellBinding;
+import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
+import org.apache.isis.viewer.bdd.common.ScenarioCell;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
+
+public class Size extends ThatAbstract {
+
+    public Size() {
+        super("size");
+    }
+
+    @Override
+    protected void doThat(final PerformContext performContext, final Iterable<ObjectAdapter> collection) throws ScenarioBoundValueException {
+
+        final CellBinding thatBinding = performContext.getPeer().getThatItBinding();
+        final CellBinding arg0Binding = performContext.getPeer().getArg0Binding();
+
+        if (!arg0Binding.isFound()) {
+            throw ScenarioBoundValueException.current(thatBinding, "(requires argument)");
+        }
+
+        final ScenarioCell arg0Cell = arg0Binding.getCurrentCell();
+
+        final String expectedSizeStr = arg0Cell.getText();
+        final int expectedSize;
+        try {
+            expectedSize = Integer.parseInt(expectedSizeStr);
+        } catch (final NumberFormatException ex) {
+            throw ScenarioBoundValueException.current(arg0Binding, "(not an integer)");
+        }
+
+        if (expectedSize <= 0) {
+            throw ScenarioBoundValueException.current(arg0Binding, "(not a positive integer)");
+        }
+
+        int actualSize = 0;
+        for (@SuppressWarnings("unused")
+        final ObjectAdapter eachObject : collection) {
+            actualSize++;
+        }
+
+        if (expectedSize != actualSize) {
+            throw ScenarioBoundValueException.current(arg0Binding, "" + actualSize);
+        }
+
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/collections/ThatAbstract.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/collections/ThatAbstract.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/collections/ThatAbstract.java
new file mode 100644
index 0000000..e5a39f5
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/collections/ThatAbstract.java
@@ -0,0 +1,50 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.collections;
+
+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.feature.OneToManyAssociation;
+import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.ThatSubcommandAbstract;
+
+public abstract class ThatAbstract extends ThatSubcommandAbstract {
+
+    public ThatAbstract(final String key) {
+        super(key);
+    }
+
+    @Override
+    public ObjectAdapter that(final PerformContext performContext) throws ScenarioBoundValueException {
+
+        final ObjectAdapter onAdapter = performContext.getOnAdapter();
+        final OneToManyAssociation otma = (OneToManyAssociation) performContext.getObjectMember();
+
+        final ObjectAdapter nakedObjectRepresentingCollection = otma.get(onAdapter);
+        final CollectionFacet collectionFacet = nakedObjectRepresentingCollection.getSpecification().getFacet(CollectionFacet.class);
+
+        doThat(performContext, collectionFacet.iterable(nakedObjectRepresentingCollection));
+
+        return nakedObjectRepresentingCollection; // can alias if wish
+    }
+
+    protected abstract void doThat(PerformContext performContext, Iterable<ObjectAdapter> collection) throws ScenarioBoundValueException;
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/object/NotSaved.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/object/NotSaved.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/object/NotSaved.java
new file mode 100644
index 0000000..544fe98
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/object/NotSaved.java
@@ -0,0 +1,46 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.object;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.viewer.bdd.common.CellBinding;
+import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.ThatSubcommandAbstract;
+
+public class NotSaved extends ThatSubcommandAbstract {
+
+    public NotSaved() {
+        super("is not saved", "is not persistent", "is not persisted", "not saved", "not persistent", "not persisted");
+    }
+
+    @Override
+    public ObjectAdapter that(final PerformContext performContext) throws ScenarioBoundValueException {
+
+        final ObjectAdapter onAdapter = performContext.getOnAdapter();
+        final CellBinding thatItBinding = performContext.getPeer().getThatItBinding();
+
+        if (onAdapter.representsPersistent()) {
+            throw ScenarioBoundValueException.current(thatItBinding, "(saved)");
+        }
+
+        return null;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/object/NotValid.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/object/NotValid.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/object/NotValid.java
new file mode 100644
index 0000000..f85f85c
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/object/NotValid.java
@@ -0,0 +1,45 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.object;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.viewer.bdd.common.CellBinding;
+import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.ThatSubcommandAbstract;
+
+public class NotValid extends ThatSubcommandAbstract {
+
+    public NotValid() {
+        super("is not valid", "is invalid", "not valid", "invalid");
+    }
+
+    @Override
+    public ObjectAdapter that(final PerformContext performContext) throws ScenarioBoundValueException {
+
+        final CellBinding thatItBinding = performContext.getPeer().getThatItBinding();
+
+        if (performContext.validObjectConsent().isAllowed()) {
+            throw ScenarioBoundValueException.current(thatItBinding, "(valid)");
+        }
+
+        return null;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/object/Saved.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/object/Saved.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/object/Saved.java
new file mode 100644
index 0000000..fdad338
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/object/Saved.java
@@ -0,0 +1,46 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.object;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.viewer.bdd.common.CellBinding;
+import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.ThatSubcommandAbstract;
+
+public class Saved extends ThatSubcommandAbstract {
+
+    public Saved() {
+        super("is saved", "is persistent", "is persisted", "saved", "persistent", "persisted");
+    }
+
+    @Override
+    public ObjectAdapter that(final PerformContext performContext) throws ScenarioBoundValueException {
+
+        final ObjectAdapter onAdapter = performContext.getOnAdapter();
+        final CellBinding thatItBinding = performContext.getPeer().getThatItBinding();
+
+        if (!onAdapter.representsPersistent()) {
+            throw ScenarioBoundValueException.current(thatItBinding, "(not saved)");
+        }
+
+        return null;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/object/Valid.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/object/Valid.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/object/Valid.java
new file mode 100644
index 0000000..774ed63
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/object/Valid.java
@@ -0,0 +1,44 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.object;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.viewer.bdd.common.CellBinding;
+import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.ThatSubcommandAbstract;
+
+public class Valid extends ThatSubcommandAbstract {
+
+    public Valid() {
+        super("is valid", "valid");
+    }
+
+    @Override
+    public ObjectAdapter that(final PerformContext performContext) throws ScenarioBoundValueException {
+
+        if (!performContext.validObjectConsent().isAllowed()) {
+            final CellBinding thatItBinding = performContext.getPeer().getThatItBinding();
+            throw ScenarioBoundValueException.current(thatItBinding, "(not valid)");
+        }
+
+        return null;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/property/Contains.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/property/Contains.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/property/Contains.java
new file mode 100644
index 0000000..4334c82
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/property/Contains.java
@@ -0,0 +1,105 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.property;
+
+import java.util.Date;
+
+import org.apache.isis.core.commons.lang.StringUtils;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
+import org.apache.isis.core.progmodel.facets.value.date.DateValueFacet;
+import org.apache.isis.viewer.bdd.common.CellBinding;
+import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
+import org.apache.isis.viewer.bdd.common.ScenarioCell;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.ThatSubcommandAbstract;
+import org.apache.isis.viewer.bdd.common.parsers.DateParser;
+
+public class Contains extends ThatSubcommandAbstract {
+
+    public Contains() {
+        super("contains", "is", "does contain");
+    }
+
+    @Override
+    public ObjectAdapter that(final PerformContext performContext) throws ScenarioBoundValueException {
+
+        final OneToOneAssociation otoa = (OneToOneAssociation) performContext.getObjectMember();
+
+        // if we have an expected result
+        final CellBinding arg0Binding = performContext.getPeer().getArg0Binding();
+        final ScenarioCell arg0Cell = arg0Binding.getCurrentCell();
+        final String expected = arg0Cell.getText();
+
+        // get
+        final ObjectAdapter resultAdapter = otoa.get(performContext.getOnAdapter());
+
+        // see if matches null
+        if (resultAdapter == null) {
+            if (StringUtils.isNullOrEmpty(expected)) {
+                return resultAdapter;
+            }
+            throw ScenarioBoundValueException.current(arg0Binding, "(is null)");
+        }
+
+        final String resultTitle = resultAdapter.titleString();
+
+        if (!StringUtils.isNullOrEmpty(expected)) {
+
+            // see if expected matches an alias
+            final ObjectAdapter expectedAdapter = performContext.getPeer().getAliasRegistry().getAliased(expected);
+            if (expectedAdapter != null) {
+                // known
+                if (resultAdapter == expectedAdapter) {
+                    return resultAdapter;
+                }
+                throw ScenarioBoundValueException.current(arg0Binding, resultTitle);
+            }
+
+            // otherwise, see if date and if so compare as such
+            final DateValueFacet dateValueFacet = resultAdapter.getSpecification().getFacet(DateValueFacet.class);
+            if (dateValueFacet != null) {
+                final Date resultDate = dateValueFacet.dateValue(resultAdapter);
+
+                final DateParser dateParser = performContext.getDateParser();
+                final Date expectedDate = dateParser.parse(expected);
+                if (expectedDate != null) {
+                    if (expectedDate.compareTo(resultDate) == 0) {
+                        return resultAdapter; // ok
+                    }
+                }
+                final String format = dateParser.format(resultDate);
+                throw ScenarioBoundValueException.current(arg0Binding, format);
+            }
+
+            // otherwise, compare title
+            if (!StringUtils.nullSafeEquals(resultTitle, expected)) {
+                throw ScenarioBoundValueException.current(arg0Binding, resultTitle);
+            }
+        } else {
+            // try to provide a default
+            final String resultAlias = performContext.getPeer().getAliasRegistry().getAlias(resultAdapter);
+            final String resultStr = resultAlias != null ? resultAlias : resultTitle;
+            performContext.getPeer().provideDefault(arg0Cell, resultStr);
+        }
+
+        return resultAdapter;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/property/DoesNotContain.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/property/DoesNotContain.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/property/DoesNotContain.java
new file mode 100644
index 0000000..9291a7d
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/property/DoesNotContain.java
@@ -0,0 +1,78 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.property;
+
+import org.apache.isis.core.commons.lang.StringUtils;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
+import org.apache.isis.viewer.bdd.common.CellBinding;
+import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
+import org.apache.isis.viewer.bdd.common.ScenarioCell;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.ThatSubcommandAbstract;
+
+public class DoesNotContain extends ThatSubcommandAbstract {
+
+    public DoesNotContain() {
+        super("does not contain", "is not");
+    }
+
+    @Override
+    public ObjectAdapter that(final PerformContext performContext) throws ScenarioBoundValueException {
+
+        final OneToOneAssociation otoa = (OneToOneAssociation) performContext.getObjectMember();
+
+        // if we have an expected result
+        final CellBinding arg0Binding = performContext.getPeer().getArg0Binding();
+        final ScenarioCell arg0Cell = arg0Binding.getCurrentCell();
+        final String expected = arg0Cell.getText();
+
+        // get
+        final ObjectAdapter resultAdapter = otoa.get(performContext.getOnAdapter());
+
+        // see if matches null
+        if (resultAdapter == null) {
+            // ok
+            return null;
+        }
+
+        final String resultTitle = resultAdapter.titleString();
+
+        if (!StringUtils.isNullOrEmpty(expected)) {
+
+            // see if expected matches an alias
+            final ObjectAdapter expectedAdapter = performContext.getPeer().getAliasRegistry().getAliased(expected);
+            if (expectedAdapter != null) {
+                // known
+                if (resultAdapter != expectedAdapter) {
+                    return resultAdapter;
+                }
+                throw ScenarioBoundValueException.current(arg0Binding, "(does contain)");
+            }
+
+            // otherwise, compare title
+            if (StringUtils.nullSafeEquals(resultTitle, expected)) {
+                throw ScenarioBoundValueException.current(arg0Binding, "(does contain)");
+            }
+        }
+
+        return resultAdapter;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/property/Empty.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/property/Empty.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/property/Empty.java
new file mode 100644
index 0000000..b4fdd2b
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/property/Empty.java
@@ -0,0 +1,54 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.property;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
+import org.apache.isis.viewer.bdd.common.CellBinding;
+import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.ThatSubcommandAbstract;
+
+public class Empty extends ThatSubcommandAbstract {
+
+    public Empty() {
+        super("is empty");
+    }
+
+    @Override
+    public ObjectAdapter that(final PerformContext performContext) throws ScenarioBoundValueException {
+
+        final OneToOneAssociation otoa = (OneToOneAssociation) performContext.getObjectMember();
+
+        // get
+        final ObjectAdapter resultAdapter = otoa.get(performContext.getOnAdapter());
+
+        if (resultAdapter != null) {
+            String actualStr = performContext.getPeer().getAliasRegistry().getAlias(resultAdapter);
+            if (actualStr == null) {
+                actualStr = resultAdapter.titleString();
+            }
+            final CellBinding thatItBinding = performContext.getPeer().getThatItBinding();
+            throw ScenarioBoundValueException.current(thatItBinding, actualStr);
+        }
+
+        return null;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/property/NotEmpty.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/property/NotEmpty.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/property/NotEmpty.java
new file mode 100644
index 0000000..c04153f
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/property/NotEmpty.java
@@ -0,0 +1,50 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.property;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
+import org.apache.isis.viewer.bdd.common.CellBinding;
+import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.ThatSubcommandAbstract;
+
+public class NotEmpty extends ThatSubcommandAbstract {
+
+    public NotEmpty() {
+        super("is not empty");
+    }
+
+    @Override
+    public ObjectAdapter that(final PerformContext performContext) throws ScenarioBoundValueException {
+
+        final OneToOneAssociation otoa = (OneToOneAssociation) performContext.getObjectMember();
+
+        // get
+        final ObjectAdapter resultAdapter = otoa.get(performContext.getOnAdapter());
+
+        if (resultAdapter == null) {
+            final CellBinding thatItBinding = performContext.getPeer().getThatItBinding();
+            throw ScenarioBoundValueException.current(thatItBinding, "(empty)");
+        }
+
+        return null;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/property/ProposedClear.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/property/ProposedClear.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/property/ProposedClear.java
new file mode 100644
index 0000000..3befe79
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/property/ProposedClear.java
@@ -0,0 +1,53 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.property;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.consent.Consent;
+import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
+import org.apache.isis.viewer.bdd.common.CellBinding;
+import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.AssertsValidity;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.ThatValidityAbstract;
+
+public class ProposedClear extends ThatValidityAbstract {
+
+    public ProposedClear(final AssertsValidity assertion) {
+        super(assertion);
+    }
+
+    @Override
+    public ObjectAdapter that(final PerformContext performContext) throws ScenarioBoundValueException {
+
+        final ObjectAdapter onAdapter = performContext.getOnAdapter();
+        final OneToOneAssociation otoa = (OneToOneAssociation) performContext.getObjectMember();
+
+        final Consent validityConsent = otoa.isAssociationValid(onAdapter, null);
+
+        if (!getAssertion().satisfiedBy(validityConsent)) {
+            final CellBinding thatBinding = performContext.getPeer().getThatItBinding();
+            throw ScenarioBoundValueException.current(thatBinding, getAssertion().getReason(validityConsent));
+        }
+
+        // can only return null.
+        return null;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/property/ProposedSet.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/property/ProposedSet.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/property/ProposedSet.java
new file mode 100644
index 0000000..8c017cf
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/property/ProposedSet.java
@@ -0,0 +1,43 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.property;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.consent.Consent;
+import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.AssertsValidity;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.ProposedArgumentValidityAbstract;
+
+public class ProposedSet extends ProposedArgumentValidityAbstract {
+
+    public ProposedSet(final AssertsValidity assertion) {
+        super(assertion);
+    }
+
+    @Override
+    protected Consent determineConsent(final PerformContext performContext, final ObjectAdapter toValidateAdapter) {
+
+        final ObjectAdapter onAdapter = performContext.getOnAdapter();
+        final OneToOneAssociation otoa = (OneToOneAssociation) performContext.getObjectMember();
+
+        return otoa.isAssociationValid(onAdapter, toValidateAdapter);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/parsers/DateParser.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/parsers/DateParser.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/parsers/DateParser.java
new file mode 100644
index 0000000..b32fe3b
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/parsers/DateParser.java
@@ -0,0 +1,130 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.parsers;
+
+import java.text.DateFormat;
+import java.text.MessageFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.TimeZone;
+
+/**
+ * A mutable wrapper around a {@link DateFormat}, allowing the date and time
+ * parts of the format to be specified independently specified.
+ */
+public class DateParser {
+
+    /**
+     * Taken from the {@link org.apache.isis.applib.value.Date}
+     */
+    private static final TimeZone UTC_TIME_ZONE;
+    static {
+        TimeZone timeZone = TimeZone.getTimeZone("Etc/UTC");
+        if (timeZone == null) {
+            timeZone = TimeZone.getTimeZone("UTC");
+        }
+        UTC_TIME_ZONE = timeZone;
+    }
+
+    private static final String DEFAULT_DATE_MASK = "yyyy-MM-dd";
+    private static final String DEFAULT_TIME_MASK = "hh:mm";
+
+    private String dateMask = DEFAULT_DATE_MASK;
+    private String timeMask = DEFAULT_TIME_MASK;
+    private DateFormat dateAndTimeFormat = null;
+    private DateFormat dateOnlyFormat = null;
+    private DateFormat timeOnlyFormat = null;
+
+    public DateParser() {
+    }
+
+    public Date parse(final String dateAndOrTimeStr) {
+        try {
+            return getDateAndTimeFormat().parse(dateAndOrTimeStr);
+        } catch (final ParseException e) {
+            try {
+                return getDateFormat().parse(dateAndOrTimeStr);
+            } catch (final ParseException e2) {
+                try {
+                    return getTimeFormat().parse(dateAndOrTimeStr);
+                } catch (final ParseException e3) {
+                    return null;
+                }
+            }
+        }
+    }
+
+    public void setDateFormat(final String dateMask) {
+        this.dateMask = dateMask;
+        invalidateFormats();
+    }
+
+    public void setTimeFormat(final String timeMask) {
+        this.timeMask = timeMask;
+        invalidateFormats();
+    }
+
+    private void invalidateFormats() {
+        this.dateAndTimeFormat = null;
+        this.dateOnlyFormat = null;
+        this.timeOnlyFormat = null;
+    }
+
+    public String format(final Date resultDate) {
+        return getDateAndTimeFormat().format(resultDate);
+    }
+
+    private DateFormat getDateAndTimeFormat() {
+        if (dateAndTimeFormat == null) {
+            dateAndTimeFormat = getUTCDateFormat(getCombinedMask());
+        }
+        return dateAndTimeFormat;
+    }
+
+    private DateFormat getTimeFormat() {
+        if (timeOnlyFormat == null) {
+            timeOnlyFormat = getUTCDateFormat(timeMask);
+        }
+        return timeOnlyFormat;
+    }
+
+    private DateFormat getDateFormat() {
+        if (dateOnlyFormat == null) {
+            dateOnlyFormat = getUTCDateFormat(dateMask);
+        }
+        return dateOnlyFormat;
+    }
+
+    private DateFormat getUTCDateFormat(final String dateTimeMask) {
+        final DateFormat dateFormat = new SimpleDateFormat(dateTimeMask);
+        dateFormat.setTimeZone(UTC_TIME_ZONE);
+        return dateFormat;
+    }
+
+    public String getCombinedMask() {
+        return MessageFormat.format("{0} {1}", dateMask, timeMask);
+    }
+
+    @Override
+    public String toString() {
+        return getCombinedMask();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/AbstractHelper.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/AbstractHelper.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/AbstractHelper.java
new file mode 100644
index 0000000..c994859
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/AbstractHelper.java
@@ -0,0 +1,35 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.story.bootstrapping;
+
+import org.apache.isis.viewer.bdd.common.Scenario;
+
+public abstract class AbstractHelper {
+
+    private final Scenario story;
+
+    public AbstractHelper(final Scenario story) {
+        this.story = story;
+    }
+
+    protected Scenario getStory() {
+        return story;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/OpenSession.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/OpenSession.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/OpenSession.java
new file mode 100644
index 0000000..a36de30
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/OpenSession.java
@@ -0,0 +1,52 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.story.bootstrapping;
+
+import java.util.List;
+
+import org.apache.isis.applib.fixtures.LogonFixture;
+import org.apache.isis.core.commons.authentication.AuthenticationSession;
+import org.apache.isis.core.runtime.authentication.AuthenticationManager;
+import org.apache.isis.core.runtime.fixtures.authentication.AuthenticationRequestLogonFixture;
+import org.apache.isis.core.runtime.system.context.IsisContext;
+import org.apache.isis.viewer.bdd.common.Scenario;
+
+public class OpenSession {
+
+    @SuppressWarnings("unused")
+    private final Scenario story;
+
+    public OpenSession(final Scenario story) {
+        this.story = story;
+    }
+
+    public void openSession(final String userName, final List<String> roles) {
+        IsisContext.closeSession();
+        final LogonFixture logonFixture = new LogonFixture(userName, roles);
+        final AuthenticationRequestLogonFixture authRequest = new AuthenticationRequestLogonFixture(logonFixture);
+        final AuthenticationSession authSession = getAuthenticationManager().authenticate(authRequest);
+
+        IsisContext.openSession(authSession);
+    }
+
+    protected AuthenticationManager getAuthenticationManager() {
+        return IsisContext.getAuthenticationManager();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/RunViewer.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/RunViewer.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/RunViewer.java
new file mode 100644
index 0000000..185a206
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/RunViewer.java
@@ -0,0 +1,43 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.story.bootstrapping;
+
+import org.apache.isis.core.runtime.installerregistry.InstallerLookup;
+import org.apache.isis.core.runtime.installerregistry.installerapi.IsisViewerInstaller;
+import org.apache.isis.core.runtime.viewer.IsisViewer;
+import org.apache.isis.viewer.bdd.common.Scenario;
+
+public class RunViewer extends AbstractHelper {
+
+    private static final String DND_VIEWER_NAME = "dnd";
+
+    public RunViewer(final Scenario story) {
+        super(story);
+    }
+
+    public void run() {
+        final InstallerLookup installerLookup = getStory().getInstallerLookup();
+
+        final IsisViewerInstaller viewerInstaller = installerLookup.viewerInstaller(DND_VIEWER_NAME);
+        final IsisViewer viewer = viewerInstaller.createViewer();
+
+        viewer.init();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/SetClock.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/SetClock.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/SetClock.java
new file mode 100644
index 0000000..32b980b
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/SetClock.java
@@ -0,0 +1,41 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.story.bootstrapping;
+
+import java.util.Calendar;
+import java.util.Date;
+
+import org.apache.isis.applib.fixtures.FixtureClock;
+import org.apache.isis.viewer.bdd.common.Scenario;
+
+public class SetClock extends AbstractHelper {
+
+    public SetClock(final Scenario story) {
+        super(story);
+    }
+
+    public void setClock(final Date date) {
+        final FixtureClock clock = FixtureClock.initialize();
+        final Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+        clock.setDate(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH) + 1, calendar.get(Calendar.DAY_OF_MONTH));
+        clock.setTime(calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE));
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/ShutdownIsis.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/ShutdownIsis.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/ShutdownIsis.java
new file mode 100644
index 0000000..dac6e66
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/bootstrapping/ShutdownIsis.java
@@ -0,0 +1,42 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.story.bootstrapping;
+
+import org.apache.isis.core.runtime.system.IsisSystem;
+import org.apache.isis.core.runtime.system.context.IsisContext;
+import org.apache.isis.viewer.bdd.common.Scenario;
+
+public class ShutdownIsis extends AbstractHelper {
+
+    public ShutdownIsis(final Scenario story) {
+        super(story);
+    }
+
+    public void shutdown() {
+        final IsisSystem system = getStory().getSystem();
+
+        IsisContext.closeAllSessions();
+
+        if (system != null) {
+            system.shutdown();
+        }
+
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/registries/AliasRegistryDefault.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/registries/AliasRegistryDefault.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/registries/AliasRegistryDefault.java
new file mode 100644
index 0000000..12f3ed6
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/registries/AliasRegistryDefault.java
@@ -0,0 +1,108 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.story.registries;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+import java.util.TreeMap;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.runtime.system.context.IsisContext;
+import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
+import org.apache.isis.viewer.bdd.common.AliasRegistry;
+import org.apache.isis.viewer.bdd.common.ScenarioValueException;
+
+public class AliasRegistryDefault implements AliasRegistry {
+
+    private final Map<String, ObjectAdapter> adaptersByAlias = new HashMap<String, ObjectAdapter>();
+    private final Map<ObjectAdapter, String> aliasesByAdapter = new HashMap<ObjectAdapter, String>();
+
+    /**
+     * @see #nextAlias()
+     * @see #aliasPrefixedAs(String, NakedObject)
+     */
+    private final Map<String, int[]> aliasCountsByPrefix = new TreeMap<String, int[]>();
+
+    @Override
+    public void aliasAs(final String alias, final ObjectAdapter adapter) {
+        adaptersByAlias.put(alias, adapter);
+        aliasesByAdapter.put(adapter, alias);
+    }
+
+    @Override
+    public ObjectAdapter getAliased(final String alias) {
+        return adaptersByAlias.get(alias);
+    }
+
+    @Override
+    public String getAlias(final ObjectAdapter adapter) {
+        return aliasesByAdapter.get(adapter);
+    }
+
+    @Override
+    public String aliasPrefixedAs(final String prefix, final ObjectAdapter adapter) {
+        int[] aliasCountForPrefix = aliasCountsByPrefix.get(prefix);
+        if (aliasCountForPrefix == null) {
+            aliasCountForPrefix = new int[1];
+            aliasCountsByPrefix.put(prefix, aliasCountForPrefix);
+        }
+        final String nextAliasForPrefix = nextAlias(prefix, aliasCountForPrefix);
+        adaptersByAlias.put(nextAliasForPrefix, adapter);
+        return nextAliasForPrefix;
+    }
+
+    private String nextAlias(final String prefix, final int[] heldAsCount) {
+        return prefix + "#" + (++heldAsCount[0]);
+    }
+
+    @Override
+    public Iterator<Entry<String, ObjectAdapter>> iterator() {
+        final Set<Entry<String, ObjectAdapter>> entrySet = adaptersByAlias.entrySet();
+        return Collections.unmodifiableSet(entrySet).iterator();
+    }
+
+    @Override
+    public void aliasService(final String aliasAs, final String className) throws ScenarioValueException {
+        final List<ObjectAdapter> serviceAdapters = getPersistenceSession().getServices();
+        for (final ObjectAdapter serviceAdapter : serviceAdapters) {
+            if (serviceAdapter.getSpecification().getFullIdentifier().equals(className)) {
+                adaptersByAlias.put(aliasAs, serviceAdapter);
+                return;
+            }
+        }
+        throw new ScenarioValueException("no such service");
+    }
+
+    protected PersistenceSession getPersistenceSession() {
+        return IsisContext.getPersistenceSession();
+    }
+
+    @Override
+    public void clear() {
+        this.adaptersByAlias.clear();
+        this.aliasesByAdapter.clear();
+        this.aliasCountsByPrefix.clear();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/registries/AliasRegistryHolder.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/registries/AliasRegistryHolder.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/registries/AliasRegistryHolder.java
new file mode 100644
index 0000000..1bbc75c
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/registries/AliasRegistryHolder.java
@@ -0,0 +1,27 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.story.registries;
+
+import org.apache.isis.viewer.bdd.common.AliasRegistry;
+
+public interface AliasRegistryHolder {
+
+    AliasRegistry getAliasRegistry();
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/registries/ServiceRegistrySpi.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/registries/ServiceRegistrySpi.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/registries/ServiceRegistrySpi.java
new file mode 100644
index 0000000..25dff70
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/story/registries/ServiceRegistrySpi.java
@@ -0,0 +1,25 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.story.registries;
+
+import org.apache.isis.viewer.bdd.common.ServiceRegistry;
+
+public interface ServiceRegistrySpi extends ServiceRegistry {
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/util/Strings.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/util/Strings.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/util/Strings.java
new file mode 100644
index 0000000..c3950c7
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/util/Strings.java
@@ -0,0 +1,26 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.util;
+
+public final class Strings {
+
+    private Strings() {
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/site/apt/index.apt
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/site/apt/index.apt b/mothballed/bdd/common/src/site/apt/index.apt
new file mode 100644
index 0000000..1fa9d22
--- /dev/null
+++ b/mothballed/bdd/common/src/site/apt/index.apt
@@ -0,0 +1,32 @@
+~~  Licensed to the Apache Software Foundation (ASF) under one
+~~  or more contributor license agreements.  See the NOTICE file
+~~  distributed with this work for additional information
+~~  regarding copyright ownership.  The ASF licenses this file
+~~  to you under the Apache License, Version 2.0 (the
+~~  "License"); you may not use this file except in compliance
+~~  with the License.  You may obtain a copy of the License at
+~~
+~~        http://www.apache.org/licenses/LICENSE-2.0
+~~
+~~  Unless required by applicable law or agreed to in writing,
+~~  software distributed under the License is distributed on an
+~~  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+~~  KIND, either express or implied.  See the License for the
+~~  specific language governing permissions and limitations
+~~  under the License.
+
+
+
+BDD Common
+
+ The BDD <common> module provides integration logic with <Apache Isis>, 
+ independent of any particular BDD testing framework.   Although
+ the {{{../bdd-concordion/index.html}concordion}} module is the only user,
+ it is separate from that module in order to enable integrations with other 
+ BDD frameworks in the future.
+    
+Further Info
+  
+  See this module's {{{./apidocs/index.html}Javadoc}} and the 
+  {{{../docbkx/html/guide/isis-bdd-integration.html}user guide}} for more information.
+ 

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/site/apt/jottings.apt
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/site/apt/jottings.apt b/mothballed/bdd/common/src/site/apt/jottings.apt
new file mode 100644
index 0000000..c5d1200
--- /dev/null
+++ b/mothballed/bdd/common/src/site/apt/jottings.apt
@@ -0,0 +1,24 @@
+~~  Licensed to the Apache Software Foundation (ASF) under one
+~~  or more contributor license agreements.  See the NOTICE file
+~~  distributed with this work for additional information
+~~  regarding copyright ownership.  The ASF licenses this file
+~~  to you under the Apache License, Version 2.0 (the
+~~  "License"); you may not use this file except in compliance
+~~  with the License.  You may obtain a copy of the License at
+~~
+~~        http://www.apache.org/licenses/LICENSE-2.0
+~~
+~~  Unless required by applicable law or agreed to in writing,
+~~  software distributed under the License is distributed on an
+~~  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+~~  KIND, either express or implied.  See the License for the
+~~  specific language governing permissions and limitations
+~~  under the License.
+
+
+
+Jottings
+ 
+  This page is to capture any random jottings relating to this module prior 
+  to being moved into formal documentation. 
+ 

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/site/site.xml
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/site/site.xml b/mothballed/bdd/common/src/site/site.xml
new file mode 100644
index 0000000..aaffb84
--- /dev/null
+++ b/mothballed/bdd/common/src/site/site.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+  
+         http://www.apache.org/licenses/LICENSE-2.0
+         
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<project>
+
+	<body>
+		<breadcrumbs>
+			<item name="Common" href="index.html"/>
+		</breadcrumbs>
+
+		<menu name="BDD Common">
+			<item name="About" href="index.html" />
+            <item name="Jottings" href="jottings.html" />
+		</menu>
+        
+        <menu name="BDD Modules">
+            <item name="Common" href="../bdd-common/index.html" />
+            <item name="Concordion" href="../bdd-concordion/index.html" />
+        </menu>
+
+		<menu name="Maven Reports" ref="reports" />
+	</body>
+
+</project>

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/test/java/org/apache/isis/viewer/bdd/common/parsers/DateParserTest.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/test/java/org/apache/isis/viewer/bdd/common/parsers/DateParserTest.java b/mothballed/bdd/common/src/test/java/org/apache/isis/viewer/bdd/common/parsers/DateParserTest.java
new file mode 100644
index 0000000..2ef1307
--- /dev/null
+++ b/mothballed/bdd/common/src/test/java/org/apache/isis/viewer/bdd/common/parsers/DateParserTest.java
@@ -0,0 +1,48 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.parsers;
+
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.not;
+import static org.hamcrest.Matchers.nullValue;
+import static org.junit.Assert.assertThat;
+
+import java.util.Date;
+
+import org.junit.Ignore;
+import org.junit.Test;
+
+public class DateParserTest {
+
+    /**
+     * Tracking down problem in ISIS-18...
+     * <p>
+     * This fails because 'MMM' is gonna be different in different languages.
+     */
+    @Ignore
+    @Test
+    public void parsesUnder_enUK_butNotUnder_deDE() throws Exception {
+        final DateParser dateParser = new DateParser();
+        dateParser.setDateFormat("dd-MMM-yyyy");
+        dateParser.setTimeFormat("hh:mm");
+        final Date parse = dateParser.parse("02-May-2010 09:20");
+        assertThat(parse, is(not(nullValue())));
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/test/java/org/apache/isis/viewer/bdd/common/registries/AliasesRegistryTest.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/test/java/org/apache/isis/viewer/bdd/common/registries/AliasesRegistryTest.java b/mothballed/bdd/common/src/test/java/org/apache/isis/viewer/bdd/common/registries/AliasesRegistryTest.java
new file mode 100644
index 0000000..01617b4
--- /dev/null
+++ b/mothballed/bdd/common/src/test/java/org/apache/isis/viewer/bdd/common/registries/AliasesRegistryTest.java
@@ -0,0 +1,75 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.registries;
+
+import org.hamcrest.CoreMatchers;
+import org.jmock.Mockery;
+import org.jmock.integration.junit4.JMock;
+import org.jmock.integration.junit4.JUnit4Mockery;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.viewer.bdd.common.story.registries.AliasRegistryDefault;
+
+@RunWith(JMock.class)
+public class AliasesRegistryTest {
+
+    private final Mockery mockery = new JUnit4Mockery();
+
+    private AliasRegistryDefault registry;
+
+    private ObjectAdapter mockAdapter1;
+    private ObjectAdapter mockAdapter2;
+    @SuppressWarnings("unused")
+    private ObjectAdapter mockAdapter3;
+
+    @Before
+    public void setUp() throws Exception {
+        mockAdapter1 = mockery.mock(ObjectAdapter.class, "adapter1");
+        mockAdapter2 = mockery.mock(ObjectAdapter.class, "adapter2");
+        mockAdapter3 = mockery.mock(ObjectAdapter.class, "adapter3");
+        registry = new AliasRegistryDefault();
+    }
+
+    @Test
+    public void registerOneAdapter() {
+        final String heldAs1 = registry.aliasPrefixedAs("Foo", mockAdapter1);
+        Assert.assertThat(heldAs1, CoreMatchers.is("Foo#1"));
+    }
+
+    @Test
+    public void registerTwoAdaptersOfSamePrefix() {
+        @SuppressWarnings("unused")
+        final String heldAs1 = registry.aliasPrefixedAs("Foo", mockAdapter1);
+        final String heldAs2 = registry.aliasPrefixedAs("Foo", mockAdapter2);
+        Assert.assertThat(heldAs2, CoreMatchers.is("Foo#2"));
+    }
+
+    @Test
+    public void registerAdaptersOfDiffereingPrefixes() {
+        @SuppressWarnings("unused")
+        final String heldAs1 = registry.aliasPrefixedAs("Foo", mockAdapter1);
+        final String heldAs2 = registry.aliasPrefixedAs("Bar", mockAdapter2);
+        Assert.assertThat(heldAs2, CoreMatchers.is("Bar#1"));
+    }
+
+}


[04/19] ISIS-463: mothballing BDD viewer

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/src/docbkx/guide/isis-bdd-integration.xml
----------------------------------------------------------------------
diff --git a/mothballed/bdd/src/docbkx/guide/isis-bdd-integration.xml b/mothballed/bdd/src/docbkx/guide/isis-bdd-integration.xml
new file mode 100644
index 0000000..299256b
--- /dev/null
+++ b/mothballed/bdd/src/docbkx/guide/isis-bdd-integration.xml
@@ -0,0 +1,4170 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+"file:./src/docbkx/dtd-4.5/docbookx.dtd">
+<book>
+  <bookinfo>
+    <title><?eval ${docbkxGuideTitle}?></title>
+
+    <subtitle><?eval ${docbkxGuideSubTitle}?></subtitle>
+
+    <releaseinfo><?eval ${project.version}?></releaseinfo>
+
+    <authorgroup>
+      <author>
+        <firstname>Dan</firstname>
+
+        <surname>Haywood</surname>
+      </author>
+    </authorgroup>
+
+    <legalnotice>
+      <para>Permission is granted to make and distribute verbatim copies of
+      this manual provided that the copyright notice and this permission
+      notice are preserved on all copies.</para>
+    </legalnotice>
+  </bookinfo>
+
+  <!-- front matter -->
+
+  <toc></toc>
+
+  <preface id="preface">
+    <title>Preface</title>
+
+    <para>Behaviour-driven development is a means to drive the development of
+    an application through stories and scenarios. These are expressed in a
+    semi-formal textual form that can be understood (or indeed be written) by
+    the domain expert/business analyst, but which can then be used to directly
+    exercise the system under test as it is developed.</para>
+
+    <para>A number of frameworks exist to streamline this process. Generally
+    these require the developer to write glue code that acts as a bridge from
+    the textual specification and the system under test.</para>
+
+    <para>The <emphasis>BDD Viewer</emphasis> module for <emphasis>Apache
+    Isis</emphasis> aims to allow <acronym>BDD</acronym> stories/scenarios to
+    be written against the domain model of an Isis application, without the
+    developer having to write any glue code. It consists of a common library
+    that abstracts the interaction with the Isis metamodel, along with an
+    integration (that uses this common library) for one particular
+    <acronym>BDD</acronym> framework, namely <ulink
+    url="http://concordion.org">Concordion</ulink>. There is also outline
+    coverage of the <ulink url="http://fitnesse.org">FitNesse</ulink>
+    integration (part of <ulink
+    url="http://code.google.com/a/apache-extras.org/p/isis-extras">isis-extras</ulink>).</para>
+
+    <para>This user guide describes how to use the
+    <emphasis>Concordion</emphasis> integration, along with details of the
+    common library so that other <acronym>BDD</acronym> frameworks can be
+    integrated if required.</para>
+
+    <para><emphasis>Apache Isis</emphasis> is licensed under <ulink
+    url="http://www.apache.org/licenses/LICENSE-2.0.html">Apache Software
+    License v2</ulink>. However, although <emphasis>Concordion</emphasis>
+    itself licensed under Apache License v2, it in turn depends upon an XML
+    library called <ulink url="http://xom.nu">XOM</ulink>, which unfortunately
+    has an <ulink url="http://www.gnu.org/licenses/lgpl-2.1.html">LGPL
+    2.1</ulink> license. Apache projects are <ulink
+    url="http://www.apache.org/legal/resolved.html#category-x">not
+    allowed</ulink> to have dependencies on <acronym>LGPL</acronym> projects.
+    </para>
+
+    <para>The workaround that we have adopted is to exclude the
+    <acronym>XOM</acronym> dependency in Isis' own
+    <filename>pom.xml</filename> files, meaning that they are compliant with
+    Apache's licensing restrictions. However, any application code that uses
+    the <emphasis>BDD Viewer</emphasis> must explicitly add its own dependency
+    to the <acronym>XOM</acronym> library. You'll find that the
+    <filename>pom.xml</filename> files generated by the quickstart archetype
+    do indeed do this.</para>
+
+    <para>However, If you are unhappy to introduce this dependency to
+    <acronym>LGPL</acronym> in your own code, then you will not be able to use
+    the <emphasis>Concordion</emphasis> integration. </para>
+  </preface>
+
+  <!-- main content -->
+
+  <chapter>
+    <title>Introduction</title>
+
+    <abstract>
+      <para>An introduction to the idea of behaviour driven development, and
+      the components that make up <emphasis>Isis</emphasis>' integration with
+      <acronym>BDD</acronym> frameworks.</para>
+    </abstract>
+
+    <sect1>
+      <title>Behaviour-driven Development</title>
+
+      <para>Prior to agile development, requirements gathering for systems was
+      traditionally performed by business analysts discussing requirements
+      with the business, and expressing those requirements in documentation,
+      such as Word specs and perhaps spreadsheets. The acceptance criteria for
+      such requirements were often only sketched out, if at all; it would
+      normally fall to the system testers to write acceptance tests for the
+      requirements, through a mixture of consulting the original (by now
+      out-of-date) requirements documentation and (as often as not)
+      reverse-engineering the implementation.</para>
+
+      <para>Behaviour-driven development combines requirements capture and the
+      acceptance test criteria in a single form, through scenarios. As before,
+      these requirements are in a form that a non-technical domain expert from
+      the business can understand. What differs though is that these scenarios
+      can be used to directly exercise the system, and so also represent the
+      acceptance tests for the correct implementation of the requirement.
+      Moreover, the results of these tests are rendered in such a way that the
+      business can understand, and thus can help determine if the code is at
+      fault or the test. Once implemented, the acceptance tests also act as a
+      regression suite for the system.</para>
+
+      <para>Scenario tests tend to act against a complete system, or sometimes
+      at a subsystem-level. At any rate the tests must be at a granularity
+      that still makes sense to a non-technical businesss person. Compare this
+      to unit testing which exercises the behaviour / method of a single
+      class.</para>
+
+      <para>Another commonly-used name for scenario testing is "agile
+      acceptance testing". We've chosen to use the term "scenario testing"
+      though; it's a somewhat less clumsy term.</para>
+    </sect1>
+
+    <sect1 id="sec.CommonLibrary">
+      <title>Common Library</title>
+
+      <para><emphasis>Apache Isis</emphasis> integrates with
+      <acronym>BDD</acronym> frameworks through the services of a common
+      library. The main concepts that the common library exposes are:</para>
+
+      <itemizedlist>
+        <listitem>
+          <para>the <classname>Scenario</classname> class, which provides the
+          context for a single scenario of a story</para>
+        </listitem>
+
+        <listitem>
+          <para>the <classname>AliasRegistry</classname>, which allows a
+          user-friendly alias (eg "fredCustomer") to be assigned to any domain
+          object and to be referenced subsequently</para>
+        </listitem>
+
+        <listitem>
+          <para>the <classname>StoryCell</classname> interface, which is an
+          abstraction over a single element of data</para>
+
+          <para>The default implementation just wraps a
+          <classname>java.lang.String</classname>, but some frameworks might
+          provide alternative implementations. For example,
+          <emphasis>FitNesse</emphasis> has an implementation that maps to its
+          internal representation of a cell (<classname>fit.Parse</classname>
+          class).</para>
+        </listitem>
+
+        <listitem>
+          <para>the <classname>CellBinding</classname> interface, which binds
+          a column of a table to a property or to an alias</para>
+
+          <para>Many of the <acronym>BDD</acronym> frameworks (eg
+          <emphasis>Concordion</emphasis>, <emphasis>FitNesse</emphasis>)
+          encourage the use of tables as a means of succinctly capturing
+          scenario actions. This is reflected in the design of several of the
+          classes provided by the common library. The
+          <classname>CellBinding</classname> interface is used to wire the
+          values in the rows of the table to the properties specified in the
+          header.</para>
+
+          <para>Each <classname>CellBinding</classname> has a name (eg "on
+          object") and some alternative names (eg "using"). This is useful for
+          <acronym>BDD</acronym> frameworks (such as
+          <emphasis>FitNesse</emphasis>) where the provided text from the
+          scenario needs to be parsed in some way, matching up headings of
+          columns within a tabular structure. The relevant methods for
+          <acronym>BDD</acronym> framework integrations that must do this are
+          <methodname>#matches(...)</methodname>,
+          <methodname>#setHeadColumn(..)</methodname> and
+          <methodname>#createHeadColumn(..)</methodname>. Note though that not
+          every <acronym>BDD</acronym> framework integration needs this
+          particular feature; the <emphasis>Concordion</emphasis> integration
+          for example calls pre-canned methods so the matching is done simply
+          by parameter position to these method.</para>
+
+          <para>The other main method provided by
+          <classname>CellBinding</classname> is
+          <methodname>#captureCurrent(..)</methodname>. This is used (by all
+          framework integrations) to capture the current value for the column
+          which this binding represents. For example, for a column
+          representing a property name, it might hold the value
+          "firstName".</para>
+
+          <para>The library provides a default implementation of
+          <classname>CellBinding</classname>, though subclasses can override
+          if required. (For example, the <emphasis>FitNesse</emphasis>
+          integration has its own implementation to map to its data structures
+          representing cells in the FIT tables).</para>
+        </listitem>
+      </itemizedlist>
+
+      <para>One way of thinking of all these framework integrations is as a
+      replacement presentation layer, hitting the underlying domain model in
+      the same way that the regular <acronym>UI</acronym> would. (This is why
+      we call this module is called the <acronym>BDD</acronym><emphasis>
+      viewer</emphasis>).</para>
+
+      <para>In the following chapter (<xref
+      linkend="chp.IntroducingTheFramework" />), details are provided of how
+      the services of the common library are used by each of the supported
+      <acronym>BDD</acronym> framework integrations.</para>
+    </sect1>
+
+    <sect1>
+      <title>Concordion Integration</title>
+
+      <sect2>
+        <title>Introduction to Concordion</title>
+
+        <para><ulink url="http://concordion.org">Concordion</ulink> is a
+        framework to enable scenario testing. It is implemented as a <ulink
+        url="http://junit.org">JUnit4</ulink> test runner, with the test form
+        being written in <acronym>XHTML</acronym>. The domain expert /
+        business analyst authors new stories using an <acronym>XML</acronym>
+        editor; once executed as tests, the results are shown as the same
+        <acronym>XHTML</acronym> document, annotated to indicate which
+        assertions have succeeded, and which have failed. It also creates an
+        efficient feedback loop; a <emphasis>Concordion</emphasis> test will
+        "keep on going" even if it hits a failure. Thus the developer can
+        identify several issues and fix them in a single pass.</para>
+
+        <para><emphasis>Concordion</emphasis> works using a "convention over
+        configuration" approach, matching the <acronym>XHTML</acronym> text
+        file with a corresponding JUnit4 test run set up to run using
+        <emphasis>Concordion</emphasis>'s
+        <classname>ConcordionRunner</classname>, The developer then annotates
+        the <acronym>XHTML</acronym> using special (namespaced) attributes in
+        order identify the inputs to and expected results of the test. This is
+        used by the <classname>ConcordionRunner</classname> to call into
+        corresponding methods in the test.</para>
+
+        <para>For example:</para>
+
+        <itemizedlist>
+          <listitem>
+            <para>Suppose the analyst writes a scenario test called
+            <filename>CustomerPlacesOrderScenario.xhtml</filename>.</para>
+
+            <para>In the <acronym>XHTML</acronym> the analyst has identified
+            the details of the customer doing the ordering (customer ref 4321,
+            say), the product being ordered (product code 1234), the fact that
+            the customer initially has no orders, and that the customer has no
+            invoices outstanding. The test concludes with an assertion that
+            there is now an unfulfilled order for the customer, and that the
+            customer now has an invoice to be paid.</para>
+          </listitem>
+
+          <listitem>
+            <para>The developer in turn edits the <acronym>XHTML</acronym>,
+            identifying the customer and the product.</para>
+
+            <para>He then further edits the <acronym>XHTML</acronym> to call a
+            method in the JUnit4 test representing the placing of an order:
+            <methodname>placeOrder()</methodname>, say. And he finishes by
+            annotating the <acronym>XHTML</acronym> to make assertions about
+            the post conditions (unfulfilled order, new invoice to be paid
+            etc).</para>
+          </listitem>
+
+          <listitem>
+            <para>Then, the developer writes a JUnit4 test alongside the
+            <acronym>XHTML</acronym>; in this example it would be called
+            <filename>CustomerPlacesOrderScenario.java</filename>.
+            <emphasis>Concordion</emphasis> calls into this JUnit4 test as it
+            comes across the annotations in the <acronym>XHTML</acronym>, and
+            the JUnit4 test mediates with the system under test.</para>
+          </listitem>
+
+          <listitem>
+            <para>When the test runs, <emphasis>Concordion</emphasis>
+            generates a copy of the <acronym>XHTML</acronym> in an output
+            directory which can then made available for inspection by the
+            business analyst (eg published on a website).</para>
+          </listitem>
+        </itemizedlist>
+
+        <para>The <emphasis>Concordion</emphasis> website has a good <ulink
+        url="http://concordion.org/Tutorial.html">tutorial</ulink> that
+        demonstrates all the above, and can be completed in 20~30
+        minutes.</para>
+
+        <para>One slight downside of using <emphasis>Concordion</emphasis> is
+        in having to write tests in <acronym>XHTML</acronym>. One editor that
+        we recommend (commercial, but also with a free version for personal
+        use) is <ulink url="http://xmlmind.net">XmlMind</ulink>. More detailed
+        guidance is provided in <xref linkend="apx.UsingXmlMind" />.</para>
+      </sect2>
+
+      <sect2 id="sec.HowTheIsisConcordionIntegrationWorks">
+        <title>How the Isis/Concordion Integration Works</title>
+
+        <para>Although you could test an <emphasis>Apache Isis</emphasis>
+        application using vanilla <emphasis>Concordion</emphasis>, this would
+        entail you having to write all the glue code yourself to interact with
+        the domain objects. You would also need to encode the rules that are
+        normally implemented by an <emphasis>Isis</emphasis> viewer, eg so
+        that a hidden action cannot be invoked, and an invalid value for a
+        property cannot be set.</para>
+
+        <para>The <emphasis>BDD viewer</emphasis> integration provided by
+        <emphasis>Apache Isis</emphasis> works by providing a superclass for
+        the JUnit4 test, called
+        <classname>AbstractIsisConcordionScenario</classname>. This exposes
+        methods to perform all the tasks necessary for exercising an
+        application. The precise features are outlined in <xref
+        linkend="chp.IntroducingTheFramework" />.</para>
+
+        <para>For each <acronym>XHTML</acronym> scenario test, the developer
+        writes subclasses the
+        <classname>AbstractIsisConcordionScenario</classname>, creating a name
+        matching the scenario test (ie as per regular
+        <emphasis>Concordion</emphasis>). He then annotates the original
+        <acronym>XHTML</acronym>, either calling directly into the inherited
+        methods, or writing small simple methods to delegate to these
+        inherited methods as required. The <emphasis>Concordion</emphasis>
+        website has some <ulink
+        url="http://concordion.org/Technique.html">hints and tips</ulink> to
+        help you find the right balance between these two approaches.</para>
+
+        <para>The <acronym>XHTML</acronym> script that you write should have
+        the following namespace declaration:</para>
+
+        <programlisting>&lt;html 
+    xmlns:concordion="http://www.concordion.org/2007/concordion" 
+    xmlns:isis="http://isis.apache.org/2010/concordion"&gt;
+    ...
+&lt;/html&gt;</programlisting>
+
+        <para>The <literal>concordion</literal> namespace is the usual
+        namespace required by <emphasis>Concordion</emphasis>. The
+        <literal>isis</literal> namespace is defined for a similar reason: to
+        allow certain commands provided by the Isis/Concordion integration to
+        be invoked. More on this in <xref
+        linkend="chp.UserInteraction" />.</para>
+      </sect2>
+
+      <sect2>
+        <title>Specifying the Output Directory</title>
+
+        <para>The directory for the generated output can be specified
+        either:</para>
+
+        <itemizedlist>
+          <listitem>
+            <para>by overriding the <methodname>outputDir()</methodname>
+            method in <classname>AbstractIsisConcordionScenario</classname>;
+            or</para>
+          </listitem>
+
+          <listitem>
+            <para>by setting the <varname>concordion.output.dir</varname>
+            system property</para>
+          </listitem>
+        </itemizedlist>
+
+        <para>If not specified, then the output directory defaults to
+        <filename>/tmp/concordion</filename>.</para>
+      </sect2>
+
+      <sect2>
+        <title>Providing a CSS File</title>
+
+        <para>By default, Concordion will copy over the
+        <acronym>HTML</acronym> for every scenario into the output directory,
+        but it won't copy over any <acronym>CSS</acronym> resources. If you
+        want any <acronym>CSS</acronym> to be copied over, then:</para>
+
+        <itemizedlist>
+          <listitem>
+            <para>override the <methodname>customCssPackage()</methodname>
+            method in <classname>AbstractIsisConcordionScenario</classname> to
+            return any class in the package that holds the CSS file.</para>
+          </listitem>
+
+          <listitem>
+            <para>override the <methodname>customCss()</methodname> method to
+            specify the name of the <acronym>CSS</acronym> file to copy over.
+            If none is specified, then concordion.css is used.</para>
+          </listitem>
+        </itemizedlist>
+      </sect2>
+
+      <sect2>
+        <title>Configuring the Maven Surefire (test) plugin</title>
+
+        <para>The standard boilerplate to run <emphasis>Concordion</emphasis>
+        under <emphasis>Maven</emphasis> is as follows:</para>
+
+        <programlisting>&lt;plugins&gt;
+    &lt;plugin&gt;
+        &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
+        &lt;artifactId&gt;maven-surefire-plugin&lt;/artifactId&gt;
+        &lt;version&gt;2.6&lt;/version&gt;
+        &lt;configuration&gt;
+            &lt;systemPropertyVariables&gt;
+                &lt;concordion.output.dir&gt;
+                    ${project.build.directory}/concordion
+                &lt;/concordion.output.dir&gt;
+            &lt;/systemPropertyVariables&gt;
+            &lt;includes&gt;
+                &lt;include&gt;**/*Scenario.java&lt;/include&gt;
+                &lt;include&gt;**/Scenario*.java&lt;/include&gt;
+            &lt;/includes&gt;
+        &lt;/configuration&gt;
+    &lt;/plugin&gt;
+&lt;/plugins&gt;y</programlisting>
+
+        <para>There are a couple of points worth noting here.</para>
+
+        <itemizedlist>
+          <listitem>
+            <para>first, the <literal>systemPropertyVariables</literal>
+            element can be used to define the
+            <varname>concordion.output.dir</varname> system property, thereby
+            specifying the directory for the generated output</para>
+          </listitem>
+
+          <listitem>
+            <para>second, the <literal>includes</literal> element can be used
+            to only run classes with either a prefix or suffix
+            "<literal>Scenario</literal>". This allows common fixtures that
+            have been factored out to be ignored.</para>
+
+            <para>An alternative approach is to have a top-level "suite" page
+            that references all scenarios underneath (probably grouped into
+            stories). In this case the only test class that would be run
+            included is the top-level suite page. See <xref
+            linkend="sec.TopLevelSuitePage" /> for further discussion.</para>
+          </listitem>
+        </itemizedlist>
+      </sect2>
+    </sect1>
+
+    <sect1 id="sec.FitNesseIntegration">
+      <title>FitNesse Integration</title>
+
+      <para>Due to licensing restrictions, the <emphasis>FitNesse</emphasis>
+      integration is not part of <emphasis>Apache Isis</emphasis> proper.
+      However, it is available on the companion Apache Extras' <ulink
+      url="http://code.google.com/a/apache-extras.org/p/isis-extras/"><emphasis>isis-extras</emphasis></ulink>
+      site. Check that site for its release status (it is not guaranteed to be
+      in sync with <emphasis>Isis</emphasis> releases).</para>
+
+      <para>An outline of the <emphasis>FitNesse</emphasis> integration is
+      provided here, if only to help compare and contrast the means by which
+      two different frameworks integrate with the common library. We hope that
+      this will make it easier to integrate other <acronym>BDD</acronym>
+      frameworks in the future.</para>
+    </sect1>
+  </chapter>
+
+  <chapter id="chp.IntroducingTheFramework">
+    <title>Introducing the Framework</title>
+
+    <abstract>
+      <para>An introduction to the features provided by the framework. The
+      subsequent chapters provide more detailed coverage.</para>
+    </abstract>
+
+    <para>This chapter outlines the main features of the common library and
+    their support by the framework-specific integrations. The subsequent
+    chapters provide more detailed coverage.</para>
+
+    <para>Note that due to licensing restrictions the
+    <emphasis>FitNesse</emphasis> integration is not part of <emphasis>Apache
+    Isis</emphasis>. Nevertheless, an outline of the
+    <emphasis>FitNesse</emphasis> integration is provided here, if only to
+    help compare and contrast the means by which two different frameworks
+    integrate with the common library. We hope that this will make it easier
+    to integrate other <acronym>BDD</acronym> frameworks in the future.</para>
+
+    <sect1>
+      <title>Introduction</title>
+
+      <para>Broadly speaking, the framework provides the ability to bootstrap
+      and initialize an <emphasis>Isis</emphasis> application and allow the
+      domain services and objects within that application to be exercised in
+      the same way that a user would interact with the system through a
+      viewer.</para>
+
+      <para>The common library defines these abilities in terms of "fixture"
+      classes, each of which performs a single function. For example, there is
+      a fixture class to bootstrap <emphasis>Isis</emphasis>, another to setup
+      objects, and another to describe the actual interactions by the user
+      (check a property, invoke an action etc).</para>
+
+      <para>The fixture classes in the common library are oriented around a
+      tabular approach to specifying behaviour, making it easy to integrate
+      frameworks such as <emphasis>FitNesse</emphasis> that adopt a
+      table-oriented approach. Such an approach equally supports frameworks
+      such as <emphasis>Concordion</emphasis> that allow specifications to be
+      written both as tables and in free-form text. Admittedly, this does make
+      the implementation of framework integrations a little more complex than
+      it might otherwise have been ... but this is only a problem for the
+      framework integrator, not the business analyst actually writing the
+      scenarios.</para>
+    </sect1>
+
+    <sect1>
+      <title>Fixtures</title>
+
+      <para>The following chapters describe the fixtures available in detail.
+      In summary, they are:</para>
+
+      <itemizedlist>
+        <listitem>
+          <para>it bootstrap an instance of <emphasis>Apache Isis</emphasis>
+          system using the in-memory object store (see <xref
+          linkend="chp.BootstrapAndTeardown" />);</para>
+        </listitem>
+
+        <listitem>
+          <para>setting up the system state ready for the scenario (see <xref
+          linkend="chp.SetUp" />):</para>
+
+          <itemizedlist>
+            <listitem>
+              <para>specify the date/time format</para>
+            </listitem>
+
+            <listitem>
+              <para>initialize the system with a set of services, picked up
+              from the <filename>isis.properties</filename> configuration
+              file</para>
+            </listitem>
+
+            <listitem>
+              <para>allow fixtures (domain objects) to be installed into the
+              object store</para>
+            </listitem>
+
+            <listitem>
+              <para>login a specific user</para>
+            </listitem>
+
+            <listitem>
+              <para>specify the date</para>
+            </listitem>
+          </itemizedlist>
+        </listitem>
+
+        <listitem>
+          <para>allow the user to interact with services and domain objects
+          (see <xref linkend="chp.UserInteraction" />):</para>
+
+          <itemizedlist>
+            <listitem>
+              <para>asserting on the value of properties and the contents of
+              collections</para>
+            </listitem>
+
+            <listitem>
+              <para>setting the value of a property (if valid) and adding
+              to/removing from a collection (if valid)</para>
+            </listitem>
+
+            <listitem>
+              <para>invoking actions</para>
+            </listitem>
+
+            <listitem>
+              <para>asserting on the state of a class member (hidden, disabled
+              or enabled)</para>
+            </listitem>
+
+            <listitem>
+              <para>assert on the state of properties</para>
+            </listitem>
+          </itemizedlist>
+        </listitem>
+
+        <listitem>
+          <para>assert on the state of collections, either of an object, or
+          returned from an action (see <xref
+          linkend="chp.AssertingOnCollections" />);</para>
+        </listitem>
+
+        <listitem>
+          <para>tearing down the system at the end of the test (see <xref
+          linkend="chp.BootstrapAndTeardown" />)</para>
+        </listitem>
+      </itemizedlist>
+
+      <para>There are also fixtures to help with debugging (see <xref
+      linkend="chp.Debugging" />).</para>
+
+      <para>For each fixture, you'll find there's a discussion about the
+      capabilities provided by the common fixture, and then details as to the
+      support for that fixture by each of the <acronym>BDD</acronym> framework
+      integrations (<emphasis>Concordion</emphasis> and
+      <emphasis>FitNesse</emphasis>).</para>
+    </sect1>
+  </chapter>
+
+  <chapter id="chp.BootstrapAndTeardown">
+    <title>Bootstrapping &amp; Teardown</title>
+
+    <abstract>
+      <para>The fixtures provided for bootstrapping at the start of a
+      scenario, and tearing down at the end</para>
+    </abstract>
+
+    <para>In order to test an <emphasis>Apache Isis</emphasis> domain
+    application, a running instance of an <classname>IsisSystem</classname>
+    must be bootstrapped, with the appropriate configuration.</para>
+
+    <sect1>
+      <title>Scenario Context</title>
+
+      <para>The common library provides a context object which holds a
+      reference to a running <classname>IsisSystem</classname>. Moreover, it
+      tracks such things as the date/time that the scenario is running as, the
+      user that is logged-in, and managing the aliases of objects so that they
+      can be interacted with.</para>
+
+      <sect2>
+        <title>Common</title>
+
+        <para>An instance of the <classname>Scenario</classname> class
+        provides a context for the scenario. Framework integrations are
+        expected to instantiate this class, and then use it as the primary
+        means to interact with the system.</para>
+
+        <para>The <classname>Scenario</classname> class has a public no-arg
+        constructor. Instantiating the <classname>Scenario</classname> does
+        not do anything; it must also be bootstrapped (see <xref
+        linkend="sec.BootstrappingIsis" />).</para>
+      </sect2>
+
+      <sect2>
+        <title>Concordion</title>
+
+        <para>The <classname>AbstractIsisConcordionScenario</classname>
+        instantiates the <classname>Scenario</classname> object (from the
+        common library) automatically and binding it to a threadlocal. In
+        addition, <classname>AbstractIsisConcordionScenario</classname>
+        provides methods that can be invoked from within
+        <acronym>XHTML</acronym> (ie taking
+        <classname>String</classname>s).</para>
+
+        <para>Test cases should inherit from this abstract class, with the
+        <acronym>XHTML</acronym> typically calling to the inherited methods
+        directly. The developer may optionally add small helper methods to be
+        called from the <acronym>XHTML</acronym> instead; these can factor out
+        any boilerplate in the script.</para>
+      </sect2>
+
+      <sect2>
+        <title>FitNesse</title>
+
+        <para>Every <emphasis>FitNesse</emphasis> scenario must reference the
+        <classname>ScenarioFixture</classname> fixture which provides the
+        overall context for the framework. This instantiates a
+        <classname>Scenario</classname> object from the common library and
+        binding it to a thread-local.</para>
+
+        <para>Whereas other <emphasis>FitNesse</emphasis> fixtures are
+        instantiated once per table, the
+        <classname>ScenarioFixture</classname> is a <acronym>FIT</acronym>
+        <classname>DoFixture</classname> that exists for the duration of the
+        test page. It should typically be referenced in the test suite's setup
+        page, and should appear first within this setup:</para>
+
+        <informaltable>
+          <tgroup cols="1">
+            <colspec />
+
+            <tbody>
+              <row>
+                <entry><classname>Scenario Fixture</classname></entry>
+              </row>
+            </tbody>
+          </tgroup>
+        </informaltable>
+      </sect2>
+    </sect1>
+
+    <sect1 id="sec.BootstrappingIsis">
+      <title>Bootstrapping Isis</title>
+
+      <para>An <emphasis>Isis</emphasis> runtime can be bootstrapped with a
+      single call. This installs no-op implementations of some of the main
+      components, along with an in-memory object store.</para>
+
+      <sect2>
+        <title>Common</title>
+
+        <para>The <methodname>Scenario#bootstrapIsis(String configDirectory,
+        DeploymentType deploymentType)</methodname> is used to bootstrap the
+        <emphasis>Isis</emphasis> runtime:</para>
+
+        <itemizedlist>
+          <listitem>
+            <para>The specified config directory contains
+            <filename>isis.properties</filename> config file, from which the
+            services are registered. Any fixtures in that properties file are
+            ignored (the <acronym>BDD</acronym> integration requires that any
+            objects are created through the test scripts, see <xref
+            linkend="sec.SetUpObjects" /> and <xref
+            linkend="chp.UserInteraction" />).</para>
+          </listitem>
+
+          <listitem>
+            <para>The deployment type must be either EXPLORATION (meaning
+            exploration actions are enabled) or PROTOTYPE; no other values are
+            valid).</para>
+          </listitem>
+        </itemizedlist>
+
+        <para>Even if running in exploration mode, you must still logon (see
+        <xref linkend="sec.LogonAsSwitchUserTo" />) in order to indicate which
+        user account to run the scenario as.</para>
+      </sect2>
+
+      <sect2>
+        <title>Concordion</title>
+
+        <para>The <classname>AbstractIsisConcordionScenario</classname> class
+        provides two overloaded versions of
+        <methodname>bootstrapIsis(...)</methodname> method:</para>
+
+        <itemizedlist>
+          <listitem>
+            <para><methodname>#bootstrapIsis(String configDirectory,
+            DeploymentType deploymentType)</methodname></para>
+
+            <para>Intended to be called from within an <methodname>@Before
+            setUp()</methodname> method, when there's no particular need to
+            document the bootstrapping process within the scenario;</para>
+          </listitem>
+        </itemizedlist>
+
+        <itemizedlist>
+          <listitem>
+            <para><methodname>#bootstrapIsis(String configDirectory, String
+            deploymentType):boolean</methodname></para>
+
+            <para>Intended to be called from the <acronym>XHTML</acronym>
+            page, allowing the scenario document the bootstrapping process.
+            For example, to bootstrap in exploration mode, use:</para>
+
+            <programlisting>&lt;p concordion:execute="#result=bootstrapIsis(#configDir,#deploymentType)"&gt;
+Isis system &lt;span concordion:assertTrue="#result"&gt;bootstrapped&lt;/span&gt; 
+from config directory &lt;span concordion:set="#configDir"&gt;../quickrun/config&lt;/span&gt;
+and running in &lt;span concordion:set="#deploymentType"&gt;exploration&lt;/span&gt; mode.
+&lt;/p&gt;</programlisting>
+
+            <para>The method always returns <literal>true</literal>, but any
+            runtime exception will propagate to the generated page.</para>
+          </listitem>
+        </itemizedlist>
+
+        <para>Whichever method is used, they both delegate to the common
+        <methodname>Scenario#bootstrapIsis(...)</methodname> method.</para>
+      </sect2>
+
+      <sect2>
+        <title>FitNesse</title>
+
+        <para>The <classname>BootstrapIsisConfiguredFromInMode</classname>
+        fixture is used to bootstrap <emphasis>Isis</emphasis>. It takes the
+        form:</para>
+
+        <informaltable>
+          <tgroup cols="4">
+            <colspec colwidth="3*" />
+
+            <tbody>
+              <row>
+                <entry><classname>Bootstrap Isis Configured
+                From</classname></entry>
+
+                <entry><emphasis>config Directory</emphasis></entry>
+
+                <entry><methodname>In Mode</methodname></entry>
+
+                <entry><emphasis>deployment Type</emphasis></entry>
+              </row>
+            </tbody>
+          </tgroup>
+        </informaltable>
+
+        <para>This delegates to the common
+        <methodname>Scenario#bootstrapIsis(...)</methodname> method.</para>
+      </sect2>
+    </sect1>
+
+    <sect1 id="sec.ShutdownIsis">
+      <title>Shutdown Isis</title>
+
+      <para>This fixture shuts down the <emphasis>Isis</emphasis> runtime,
+      releasing memory and so on. A good place to put this is in the test's
+      teardown.</para>
+
+      <sect2>
+        <title>Common</title>
+
+        <para>The <methodname>Scenario#shutdownIsis()</methodname> method is
+        used to shutdown <emphasis>Isis</emphasis> runtime.</para>
+      </sect2>
+
+      <sect2>
+        <title>Concordion</title>
+
+        <para>To shutdown <emphasis>Isis</emphasis> from within
+        <emphasis>Concordion</emphasis>, use the
+        <methodname>AbstractIsisConcordionScenario#shutdownIsis()</methodname>
+        method. This just delegates to the common library's
+        <classname>Scenario#shutdownIsis()</classname> method.</para>
+      </sect2>
+
+      <sect2>
+        <title>FitNesse</title>
+
+        <para>To shutdown Isis from FitNesse, use the
+        <classname>ShutdownIsis</classname> fixture:</para>
+
+        <informaltable>
+          <tgroup cols="1">
+            <colspec colwidth="3*" />
+
+            <tbody>
+              <row>
+                <entry><classname>Shutdown Isis</classname></entry>
+              </row>
+            </tbody>
+          </tgroup>
+        </informaltable>
+
+        <para>This just delegates to the common library's
+        <methodname>Scenario#shutdownIsis()</methodname> method.</para>
+      </sect2>
+    </sect1>
+  </chapter>
+
+  <chapter id="chp.SetUp">
+    <title>Scenario Set Up</title>
+
+    <abstract>
+      <para>Once <emphasis>Isis</emphasis> has been bootstrapped, the
+      application state must be setup.</para>
+    </abstract>
+
+    <para>The setup fixtures are used to specify the initial state of the
+    running application for a particular scenario's. Specifically, this means
+    setting up the services that define the application, the effective date
+    and the effective user. It also allows the setup of arbitrary objects
+    (typically reference/static data objects; for transactional objects see
+    <xref linkend="chp.UserInteraction" />).</para>
+
+    <sect1 id="sec.LogonAsSwitchUserTo">
+      <title>Logging On / Switching User</title>
+
+      <para>Used to specify the currently logged-on user. Should always be
+      called near the top of the scenario, as part of the "given". Can also be
+      used for switching the current user later on in the scenario, eg to
+      check a workflow between different users.</para>
+
+      <sect2>
+        <title>Common</title>
+
+        <para>The common library provides two overloaded methods, depending on
+        whether the roles for the user need to be specified or not:</para>
+
+        <itemizedlist>
+          <listitem>
+            <para><methodname>Scenario#logonAsOrSwitchUserTo(String
+            userName)</methodname></para>
+
+            <para>Logs on / switch user to as a specific user.</para>
+          </listitem>
+
+          <listitem>
+            <para><methodname>Scenario#logonAsOrSwitchUserTo(String userName,
+            List&lt;String&gt; roleNames)</methodname></para>
+
+            <para>Logs on to a specific user, with specified roles. Part of
+            the initialization for a particular scenario's setup, and
+            typically referenced in the test suite or scenario's own setup
+            page.</para>
+          </listitem>
+        </itemizedlist>
+
+        <para>The username and roles are not validated against.</para>
+      </sect2>
+
+      <sect2>
+        <title>Concordion</title>
+
+        <para>The <emphasis>Concordion</emphasis> integration provides two
+        sets of overloaded methods in
+        <classname>AbstractIsisConcordionScenario</classname>:</para>
+
+        <itemizedlist>
+          <listitem>
+            <para><methodname>#logonAs(String userName)</methodname> and
+            <methodname>#logonAs(String userName, String
+            roleListStr)</methodname></para>
+
+            <para>Intended to be called in the initial setup, as part of the
+            scenario's "given".</para>
+          </listitem>
+
+          <listitem>
+            <para><methodname>#switchUserTo(String userName)</methodname> and
+            <methodname>#switchUserTo(String userName, String
+            roleListStr)</methodname></para>
+
+            <para>(Optional); intended to be called later on in the scenario,
+            eg, to test workflow.</para>
+          </listitem>
+        </itemizedlist>
+
+        <para>Each of these is intended to be called from the
+        <acronym>XHTML</acronym>. For example:</para>
+
+        <programlisting>&lt;p concordion:execute="#result=logonAs(#userName)"&gt;&lt;span concordion:assertTrue="#result"&gt;logged on&lt;/span&gt; as &lt;span concordion:set="#userName"&gt;fsmith&lt;/span&gt;&lt;/p&gt;</programlisting>
+
+        <para>The role list, if specified, should be comma-separated (any
+        white space will be ignored).</para>
+      </sect2>
+
+      <sect2>
+        <title>FitNesse</title>
+
+        <para>The FitNesse integration provides two sets of overloaded
+        fixtures:</para>
+
+        <informaltable>
+          <tgroup cols="2">
+            <colspec />
+
+            <tbody>
+              <row>
+                <entry><classname>Logon As</classname></entry>
+
+                <entry><emphasis>user name</emphasis></entry>
+              </row>
+            </tbody>
+          </tgroup>
+        </informaltable>
+
+        <informaltable>
+          <tgroup cols="4">
+            <colspec />
+
+            <tbody>
+              <row>
+                <entry><classname>Logon As</classname></entry>
+
+                <entry><emphasis>user name</emphasis></entry>
+
+                <entry><classname>With Roles</classname></entry>
+
+                <entry><emphasis>role list</emphasis></entry>
+              </row>
+            </tbody>
+          </tgroup>
+        </informaltable>
+
+        <para>Intended to be called in the initial setup, as part of the
+        scenario's "given".</para>
+
+        <informaltable>
+          <tgroup cols="2">
+            <colspec />
+
+            <tbody>
+              <row>
+                <entry><classname>Switch User To</classname></entry>
+
+                <entry><emphasis>user name</emphasis></entry>
+              </row>
+            </tbody>
+          </tgroup>
+        </informaltable>
+
+        <informaltable>
+          <tgroup cols="4">
+            <colspec />
+
+            <tbody>
+              <row>
+                <entry><classname>Switch User To</classname></entry>
+
+                <entry><emphasis>user name</emphasis></entry>
+
+                <entry><classname>With Roles</classname></entry>
+
+                <entry><emphasis>role list</emphasis></entry>
+              </row>
+            </tbody>
+          </tgroup>
+        </informaltable>
+
+        <para>Optional; intended to be called later on in the scenario, eg, to
+        test workflow.</para>
+
+        <para>The role list, if specified, should be comma-separated (any
+        white space will be ignored).</para>
+      </sect2>
+    </sect1>
+
+    <sect1 id="sec.DateAndTimeFormat">
+      <title>Date and Time Format</title>
+
+      <para><acronym>BDD</acronym> tests often rely on exact dates and/or time
+      to be specified, but any such date/time must be specified in text form.
+      In order that tests do not fail when run with different locales, the
+      common library allows a date/time format to be specified.</para>
+
+      <para>This fixture is typically called only once in the scenario.</para>
+
+      <para><note>
+          <para>Date/time formats are based on the currently used locale. By
+          default, Isis will use the current locale. To change this, set the
+          relevant locale within <filename>isis.properties</filename>. For
+          example:</para>
+
+          <programlisting>isis.locale=de_DE</programlisting>
+        </note><note>
+          <para>Dates are always intepreted strictly as UTC dates. This means
+          that you shouldn't need to worry about the timezone in which the
+          tests are being run.</para>
+        </note></para>
+
+      <sect2>
+        <title>Common</title>
+
+        <para>The <classname>Scenario</classname> class provides two methods
+        to specify date and time formats:</para>
+
+        <itemizedlist>
+          <listitem>
+            <para><methodname>#usingDateFormat(String)</methodname> is used to
+            specify the date format.</para>
+
+            <para>If not called, the format defaults to "dd-MMM-yyyy", eg
+            02-Aug-2010.</para>
+          </listitem>
+
+          <listitem>
+            <para><methodname>#usingTimeFormat(String)</methodname> is used to
+            specify the time format.</para>
+
+            <para>If not called, the time format defaults to "hh:mm" (a 24
+            hour clock, eg 14:45 for 2.45pm)</para>
+          </listitem>
+        </itemizedlist>
+
+        <para>Typically the scenario will have both date and also time
+        specified (in <xref linkend="sec.SettingDateAndTime" />), but
+        assertions against domain objects will often care only about date, or
+        may occasionally care only about time. Therefore, whenever text
+        representing a date must be parsed, the following is used:</para>
+
+        <itemizedlist>
+          <listitem>
+            <para>parse against date+time (eg "dd-MMM-yyyy hh:mm")</para>
+          </listitem>
+
+          <listitem>
+            <para>if that fails, parse against just date (eg
+            "dd-MMM-yyyy")</para>
+          </listitem>
+
+          <listitem>
+            <para>if that fails, parse against just time (eg "hh:mm")</para>
+          </listitem>
+        </itemizedlist>
+      </sect2>
+
+      <sect2>
+        <title>Concordion</title>
+
+        <para>The <classname>AbstractIsisConcordionScenario</classname>
+        provides two corresponding methods:</para>
+
+        <itemizedlist>
+          <listitem>
+            <para><methodname>#usingDateFormat(String)</methodname></para>
+          </listitem>
+
+          <listitem>
+            <para><methodname>#usingTimeFormat(String)</methodname></para>
+          </listitem>
+        </itemizedlist>
+
+        <para>For example:</para>
+
+        <programlisting>&lt;p concordion:execute="#result=timeIs(#dateTime)"&gt;The &lt;span concordion:assertTrue="#result"&gt;date/time&lt;/span&gt; is &lt;span concordion:set="#dateTime"&gt;2 mar 2007 09:20&lt;/span&gt;.&lt;/p&gt; </programlisting>
+
+        <para>These just delegate to the corresponding methods in the
+        <classname>Scenario</classname> class.</para>
+      </sect2>
+
+      <sect2>
+        <title>FitNesse</title>
+
+        <para>Not implemented at this time.</para>
+      </sect2>
+    </sect1>
+
+    <sect1 id="sec.SettingDateAndTime">
+      <title>Setting Date and Time</title>
+
+      <para><acronym>BDD</acronym> scenarios often rely on an exact date and
+      time, and the date/time that a scenario is being run upon can be
+      specified using this fixture. For example, with the date/time set,
+      functionality that checks the a property is defaulted to "today" can
+      then be easily verified.</para>
+
+      <para>This fixture will typically be called only once in a scenario.
+      However, more advanced scenarios might require the date/time to be
+      called different places. For example, a scenario might raise an
+      <classname>Invoice</classname>, then move the clock forward by 30 days
+      to test functionality relating to the handling of
+      <classname>Invoice</classname>s unpaid for more than 28 days.</para>
+
+      <sect2>
+        <title>Common</title>
+
+        <para>The
+        <methodname>Scenario#dateAndTimeIs(String)</methodname>method allows
+        the scenario to specify the date and time. Note that a
+        <classname>String</classname> is passed in rather than a
+        <classname>java.util.Date</classname>, so that the scenario can parse
+        the date according to the date/time format (see <xref
+        linkend="sec.DateAndTimeFormat" />).</para>
+
+        <para>The fixture installs the <classname>FixtureClock</classname> as
+        the implementation of the <classname>Clock</classname> singleton (in
+        the applib). Every call to the <classname>Clock</classname> will
+        return the same date/time until the method is called again.</para>
+
+        <para>If this fixture is not called, then the default system clock is
+        used, which gets the time from the host computer. The
+        <methodname>Scenario#debugClock()</methodname> method (<xref
+        linkend="sec.DebugClock" />) can be used to verify the clock
+        state.</para>
+      </sect2>
+
+      <sect2>
+        <title>Concordion</title>
+
+        <para>The <emphasis>Concordion</emphasis> integration provides a
+        number of overloaded methods, all designed to be called from the
+        <acronym>XHTML</acronym>:</para>
+
+        <itemizedlist>
+          <listitem>
+            <para><methodname>#dateIs(String
+            dateAndTimeStr)</methodname></para>
+          </listitem>
+
+          <listitem>
+            <para><methodname>#timeIs(String
+            dateAndTimeStr)</methodname></para>
+          </listitem>
+        </itemizedlist>
+
+        <para>For example:</para>
+
+        <programlisting>&lt;p concordion:execute="#result=timeIs(#dateTime)"&gt;
+  The &lt;span concordion:assertTrue="#result"&gt;date/time&lt;/span&gt; 
+  is &lt;span concordion:set="#dateTime"&gt;02-mar-2007 09:20&lt;/span&gt;.
+&lt;/p&gt; </programlisting>
+
+        <para>The overloaded forms are just for convenience; sometimes the
+        scenario will want to emphasis the date, other times the time.</para>
+      </sect2>
+
+      <sect2>
+        <title>FitNesse</title>
+
+        <para>The <emphasis>FitNesse</emphasis> integration provides four
+        versions (overloaded only so reads well in the page):</para>
+
+        <informaltable>
+          <tgroup cols="2">
+            <colspec />
+
+            <tbody>
+              <row>
+                <entry><classname>Date Is</classname></entry>
+
+                <entry><emphasis>date and time</emphasis></entry>
+              </row>
+            </tbody>
+          </tgroup>
+        </informaltable>
+
+        <informaltable>
+          <tgroup cols="2">
+            <colspec />
+
+            <tbody>
+              <row>
+                <entry><classname>Date Is Now</classname></entry>
+
+                <entry><emphasis>date and time</emphasis></entry>
+              </row>
+            </tbody>
+          </tgroup>
+        </informaltable>
+
+        <informaltable>
+          <tgroup cols="2">
+            <colspec />
+
+            <tbody>
+              <row>
+                <entry><classname>Time Is</classname></entry>
+
+                <entry><emphasis>date and time</emphasis></entry>
+              </row>
+            </tbody>
+          </tgroup>
+        </informaltable>
+
+        <informaltable>
+          <tgroup cols="2">
+            <colspec />
+
+            <tbody>
+              <row>
+                <entry><classname>Time Is Now</classname></entry>
+
+                <entry><emphasis>date and time</emphasis></entry>
+              </row>
+            </tbody>
+          </tgroup>
+        </informaltable>
+
+        <para>In each case the date/time provided is parsed against the format
+        'dd MMM yyyy hh:mm'</para>
+      </sect2>
+    </sect1>
+
+    <sect1 id="sec.AliasServices">
+      <title>Aliasing Services</title>
+
+      <para>Specifies an alias to a service in order to invoke actions upon
+      it. Typically this will be done for most if not all of the registered
+      repositories. The class name (as defined in
+      <filename>isis.properties</filename>) is used as the key; the alias
+      defines a simple handle.</para>
+
+      <para>For example, a service
+      <classname>com.mycompany.customers.defaults.CustomerRepositoryDefault</classname>
+      can be mapped to "customers".</para>
+
+      <sect2>
+        <title>Common</title>
+
+        <para>The common library provides two methods:<itemizedlist>
+            <listitem>
+              <para><methodname>Scenario#getAliasRegistry()</methodname></para>
+            </listitem>
+
+            <listitem>
+              <para><methodname>AliasRegistry#aliasService(String aliasAs,
+              String serviceClassName)</methodname></para>
+            </listitem>
+          </itemizedlist></para>
+
+        <para>The <acronym>BDD</acronym> framework integration is expected to
+        obtain the <classname>AliasRegistry</classname> from the
+        <classname>Scenario</classname>, and then use the
+        <classname>AliasRegisty</classname> to register the alias.</para>
+      </sect2>
+
+      <sect2>
+        <title>Concordion</title>
+
+        <para>The <methodname>Concordion</methodname> integration provides a
+        corresponding method, <methodname>#aliasService(aliasAs, String
+        serviceClassName)</methodname>. This returns <literal>true</literal>
+        if the service was found, false otherwise. Call within a table to
+        alias multiple services, for example:<programlisting>&lt;table concordion:execute="#result=aliasService(#aliasAs, #className)"&gt;
+  &lt;tr&gt;
+    &lt;th concordion:set="#className"&gt;Class Name&lt;/th&gt;
+    &lt;th concordion:set="#aliasAs"&gt;aliasAs&lt;/th&gt;
+    &lt;th concordion:assertTrue="#result"/&gt;
+  &lt;/tr&gt;
+  &lt;tr&gt;
+    &lt;td&gt;com.mycompany.myapp.objstore.dflt.claim.ClaimRepositoryDefault&lt;/td&gt;
+    &lt;td&gt;claims&lt;/td&gt;
+    &lt;td&gt;ok&lt;/td&gt;
+  &lt;/tr&gt;
+  &lt;tr&gt;
+    &lt;td&gt;com.mycompany.myapp.objstore.dflt.employee.EmployeeRepositoryDefault&lt;/td&gt;
+    &lt;td&gt;employees&lt;/td&gt;
+    &lt;td&gt;ok&lt;/td&gt;
+  &lt;/tr&gt;
+&lt;/table&gt;</programlisting></para>
+      </sect2>
+
+      <sect2>
+        <title>FitNesse</title>
+
+        <para>The <emphasis>FitNesse</emphasis> integration provides an
+        implementation of a <classname>ColumnFixture</classname>, which is
+        used as follows:</para>
+
+        <para><informaltable>
+            <tgroup cols="2">
+              <colspec colname="_1" />
+
+              <colspec colname="_2" />
+
+              <tbody>
+                <row>
+                  <entry nameend="_2" namest="_1"><classname>Alias
+                  Services</classname></entry>
+                </row>
+
+                <row>
+                  <entry><classname>class name</classname></entry>
+
+                  <entry><classname>alias=</classname></entry>
+                </row>
+
+                <row>
+                  <entry><emphasis>com.mycompany.myapp.objstore.dflt.claim.ClaimRepositoryDefault</emphasis></entry>
+
+                  <entry><emphasis>claims</emphasis></entry>
+                </row>
+              </tbody>
+            </tgroup>
+          </informaltable></para>
+      </sect2>
+    </sect1>
+
+    <sect1 id="sec.SetUpObjects">
+      <title>Setting Up Objects</title>
+
+      <para>Virtually every scenario will require some initial objects to work
+      on, be it a <classname>Customer</classname>, an
+      <classname>Order</classname> or just some reference data. However, by
+      design the <acronym>BDD</acronym> viewer runs against an in-memory
+      object store, meaning that the application having been bootstrapped has
+      nothing in its persistent object store.</para>
+
+      <para>This fixture, therefore, is used to create objects, and persists
+      them to the object store. It is typically used for immutable
+      reference/standing data objects. It can also be to setup used for
+      transaction/operational data objects, though
+      <classname>UsingIsisViewerForSetup</classname>, <xref
+      linkend="chp.UserInteraction" />, is generallly to be preferred).</para>
+
+      <para>The <classname>DebugObjectStore</classname> fixture (<xref
+      linkend="sec.DebugObjectStore" />) can be used to check the state of
+      objects created. You can also use the RunViewer fixture (<xref
+      linkend="sec.RunViewer" />) to visually inspect the state of the system
+      using the DnD viewer.</para>
+
+      <sect2>
+        <title>Common</title>
+
+        <para>The common library support for setting up objects using the
+        <classname>SetUpObjectsPeer</classname> class. This represents the
+        context for creating a set of objects all of the same type, and is
+        usually called multiple times (eg corresponding to a table structure
+        in the scenario text itself).</para>
+
+        <para>The constructor for this class takes the following
+        arguments:</para>
+
+        <itemizedlist>
+          <listitem>
+            <para><classname>AliasRegistry</classname>
+            <varname>aliasRegistry</varname></para>
+
+            <para>the alias registry which is used to lookup aliases to
+            existing objects, and is populated with aliases for the new
+            created objects (if an alias binding is specified; see
+            below).</para>
+          </listitem>
+
+          <listitem>
+            <para><classname>String</classname>
+            <varname>className</varname></para>
+
+            <para>This is the fully qualified class name of the object to be
+            instantiated</para>
+          </listitem>
+
+          <listitem>
+            <para><classname>SetUpObjectsPeer.Mode</classname>
+            <varname>mode</varname></para>
+
+            <para>This is whether the object is to be persisted or not</para>
+          </listitem>
+
+          <listitem>
+            <para><classname>CellBinding</classname>
+            <varname>aliasBinding</varname></para>
+
+            <para>This object represents a binding to a cell that will hold
+            the reference to each newly created object. It can be left
+            <literal>null</literal> if required.</para>
+          </listitem>
+        </itemizedlist>
+
+        <para>Different methods are available for <acronym>BDD</acronym>
+        framework integrations to call. Typically the <acronym>BDD</acronym>
+        framework is expected to setup header information (the names of the
+        properties), and then process each row.</para>
+
+        <para>On the header of the table, the main method to call
+        is:<itemizedlist>
+            <listitem>
+              <para><methodname>#definePropertyOrAlias(String
+              propertyNameOrAlias, int colNum)</methodname></para>
+
+              <para>This associates each column with a property of the class,
+              or an alias for the object overall</para>
+            </listitem>
+          </itemizedlist></para>
+
+        <para>When processing each row, typically the main methods to call
+        are:</para>
+
+        <itemizedlist>
+          <listitem>
+            <para><methodname>#addPropertyValueOrAlias(String
+            propertyOrAliasValue)</methodname></para>
+
+            <para>This provides the value of each property of the object to be
+            created, or the alias to know the object by once created. The
+            property value can either be an existing alias, else must be
+            parseable (nb: Isis' own value types itself perform the parsing,
+            so there's no additional work to be done here)</para>
+          </listitem>
+
+          <listitem>
+            <para><methodname>#createObject()</methodname></para>
+
+            <para>This actually instantiates the object, either persistent or
+            non-persistent as specified in the constructor, and assigns it an
+            alias</para>
+          </listitem>
+        </itemizedlist>
+
+        <para>That said, there are some other public methods that are
+        available for more complex integrations (notably:
+        <emphasis>FitNesse</emphasis>).</para>
+      </sect2>
+
+      <sect2>
+        <title>Concordion</title>
+
+        <para>The <emphasis>Concordion</emphasis> framework integration
+        provides:</para>
+
+        <itemizedlist>
+          <listitem>
+            <para><methodname>#setUpObject(String className, String aliasAs,
+            String propertyName1, String propertyName2,
+            ...)</methodname></para>
+
+            <para>There are 10 overloaded versions of this method, to account
+            for setting up different types of objects that have up to 10
+            properties.</para>
+
+            <para>The method returns a string "ok" if has worked, otherwise it
+            returns exception text. This might seem a little odd, but allows a
+            meaningful message to be shown in the
+            <acronym>XHTML</acronym>.</para>
+          </listitem>
+
+          <listitem>
+            <para><methodname>#setUpObjectVarArgs(String className, String
+            aliasAs, ...)</methodname></para>
+
+            <para>This (protected, not public) method is to cater for setting
+            up objects that require more than 10 properties to be setup. In
+            these cases, the developer should write their own method and call
+            into the <methodname>#setUpObjectsVarargs(...)</methodname> as
+            required.</para>
+          </listitem>
+        </itemizedlist>
+
+        <para>Note that this method should be called from the
+        <acronym>XHTML</acronym> using <literal>isis:execute</literal>, not
+        with <literal>concordion:execute</literal>. The difference between the
+        two is that <literal>isis:execute</literal> is called on the header
+        row as well as each body row, whereas concordion:execute only calls
+        for each body row. The integration requires the header row to be
+        called in order to read the names of the properties to be used to
+        initialize the objects.</para>
+
+        <para>For example, here's how to setup a set of three
+        <classname>Employee</classname> objects:</para>
+
+        <programlisting>&lt;p&gt;With Employees (&lt;span concordion:set="#className"&gt;com.mycompany.myapp.dom.employee.Employee&lt;/span&gt;):
+&lt;/p&gt;
+&lt;table isis:execute="#result=setUpObject(#className, #aliasAs, #name, #approver)"&gt;
+  &lt;tr&gt;
+    &lt;th concordion:set="#name"&gt;Name&lt;/th&gt;
+    &lt;th concordion:set="#approver"&gt;Approver&lt;/th&gt;
+    &lt;th concordion:set="#aliasAs"&gt;aliasAs&lt;/th&gt;
+    &lt;th concordion:assertEquals="#result"/&gt;
+  &lt;/tr&gt;
+  &lt;tr&gt;
+    &lt;td&gt;Fred Smith&lt;/td&gt;
+    &lt;td&gt;&lt;/td&gt;
+    &lt;td&gt;Employee:Fred Smith&lt;/td&gt;
+    &lt;td&gt;ok&lt;/td&gt;
+  &lt;/tr&gt;
+  &lt;tr&gt;
+    &lt;td&gt;Tom Brown&lt;/td&gt;
+    &lt;td&gt;Employee:Fred Smith&lt;/td&gt;
+    &lt;td&gt;Employee:Tom Brown&lt;/td&gt;
+    &lt;td&gt;ok&lt;/td&gt;
+  &lt;/tr&gt;
+  &lt;tr&gt;
+    &lt;td&gt;Sam Jones&lt;/td&gt;
+    &lt;td&gt;Employee:Fred Smith&lt;/td&gt;
+    &lt;td&gt;Employee:Sam Jones&lt;/td&gt;
+    &lt;td&gt;ok&lt;/td&gt;
+  &lt;/tr&gt;
+&lt;/table&gt;</programlisting>
+
+        <para>In this example, we've chosen the convention that the alias is
+        "Employee:<emphasis>FirstName LastName</emphasis>". This is though
+        just a convention; the alias could be anything you want.</para>
+      </sect2>
+
+      <sect2>
+        <title>FitNesse</title>
+
+        <para>The <emphasis>FitNesse</emphasis> integration uses the "Set Up
+        Objects" table, called like so:</para>
+
+        <informaltable>
+          <tgroup cols="3">
+            <colspec colname="_1" />
+
+            <colspec colname="_2" />
+
+            <colspec colname="_3" />
+
+            <tbody>
+              <row>
+                <entry><classname>Set Up Objects</classname></entry>
+
+                <entry nameend="_3"
+                namest="_2"><emphasis>com.mycompany.myapp.dom.employee.Employee</emphasis></entry>
+              </row>
+
+              <row>
+                <entry><classname>Name</classname></entry>
+
+                <entry><classname>Approver</classname></entry>
+
+                <entry><classname>alias as</classname></entry>
+              </row>
+
+              <row>
+                <entry><emphasis>Fred Smith</emphasis></entry>
+
+                <entry><emphasis> </emphasis></entry>
+
+                <entry><emphasis>Employee:Fred Smith</emphasis></entry>
+              </row>
+
+              <row>
+                <entry><emphasis>Tom Brown</emphasis></entry>
+
+                <entry><emphasis>Employee:Fred Smith</emphasis></entry>
+
+                <entry><emphasis>Employee:Tom Brown</emphasis></entry>
+              </row>
+
+              <row>
+                <entry><emphasis>Sam Jones</emphasis></entry>
+
+                <entry><emphasis>Employee:Fred Smith</emphasis></entry>
+
+                <entry><emphasis>Employee:Sam Jones</emphasis></entry>
+              </row>
+            </tbody>
+          </tgroup>
+        </informaltable>
+      </sect2>
+    </sect1>
+  </chapter>
+
+  <chapter id="chp.UserInteraction">
+    <title>User Interaction</title>
+
+    <abstract>
+      <para>Fixtures to describe interactions with the domain objects,
+      mimicking the way in which an end-user using an Isis viewer would
+      interact.</para>
+    </abstract>
+
+    <para>The user interaction fixtures are the centrepiece of the
+    <acronym>BDD</acronym> framework, simulating the interaction with domain
+    objects as if through a viewer. Using this fixtures, the scenario can
+    interact with objects, check their state, and alias referenced or returned
+    objects for subsequent interactions</para>
+
+    <para>There is basically just one fixture used to describe user
+    interactions, namely "Using Isis Viewer". There is also a "For Setup"
+    version (ie "Using Isis Viewer For Setup") that disables checks for
+    visibility and usability, making it easier to reuse functionality for
+    setting up objects prior to a test scenario (the "given").</para>
+
+    <para>The <classname>DebugObjectStore</classname> fixture (<xref
+    linkend="sec.DebugObjectStore" />) can be used to check the state of
+    objects created.</para>
+
+    <sect1>
+      <title>Common</title>
+
+      <para>The common library provides the
+      <classname>UsingIsisViewerPeer</classname> class as a means by which the
+      <acronym>BDD</acronym> framework integration can interact with
+      <emphasis>Apache Isis</emphasis> runtime.</para>
+
+      <para>The <classname>UsingIsisViewerPeer</classname> class is generally
+      called from within a table format, with each row representing a specific
+      interaction with the domain object. For example, a row might invoke an
+      action, or could check that a class member is unavailable.</para>
+
+      <para>Some interactions can be used to create or assign aliases to
+      domain objects. For example, invoking a non-void action will return a
+      result. If the result is a domain object, then the alias can be used
+      directly subsequently in the scenario. If the result is a collection,
+      then typically it is the scenario will make an assertion on that
+      collection using "Check List" (see <xref linkend="sec.CheckList" />) or
+      alias an object out of that list using "Alias Items In List" (see <xref
+      linkend="sec.AliasItemsInList" />).</para>
+
+      <sect2>
+        <title>Constructor</title>
+
+        <para>Because <classname>UsingIsisViewerPeer</classname> is
+        table-oriented, it uses <classname>CellBinding</classname>s (see <xref
+        linkend="sec.CommonLibrary" />) to bind table headers to rows. The
+        constructor takes the following parameters:</para>
+
+        <itemizedlist>
+          <listitem>
+            <para><classname>AliasRegistry</classname></para>
+
+            <para>Used to access aliases for existing domain objects, and to
+            register aliases for newly created/found objects.</para>
+          </listitem>
+
+          <listitem>
+            <para><classname>Perform.Mode</classname></para>
+
+            <para>Whether to actually perform the interactions or not</para>
+          </listitem>
+
+          <listitem>
+            <para><classname>CellBinding</classname>s for each of the columns
+            of the table.</para>
+
+            <para>Cell bindings are discussed immediately below.</para>
+          </listitem>
+        </itemizedlist>
+
+        <para>Each of the framework integrations is expected to instantiate
+        the <classname>UsingIsisViewerPeer</classname> at the beginning of the
+        table, and then call into the same instance for each row in the
+        table.</para>
+
+        <sect3>
+          <title>Cell Bindings</title>
+
+          <para>The <classname>CellBinding</classname>s passed into the
+          constructor correspond to the standard columns of the table.
+          Although all must be passed in, not all are needed for every
+          interaction; in these cases the value can be left blank. The
+          <classname>CellBinding</classname>s correspond to the following
+          column names:</para>
+
+          <itemizedlist>
+            <listitem>
+              <para>the "on object" column (can also use 'object', or 'on' if
+              parsing column name provided by scenario text)</para>
+
+              <para>The (alias of) the object to interact with. A value must
+              always be provided.</para>
+            </listitem>
+
+            <listitem>
+              <para>the "alias result as" column (can also use "result=",
+              "alias=", "alias as")</para>
+
+              <para>The alias to assign the result of any interaction.</para>
+            </listitem>
+
+            <listitem>
+              <para>the "perform" column (can also use "do", "interaction",
+              "interaction type")</para>
+
+              <para>the interaction to perform; discussed further below</para>
+            </listitem>
+
+            <listitem>
+              <para>the "on member" column (can also use "member", "using
+              member", using")</para>
+
+              <para>the property, collection or action to use</para>
+            </listitem>
+
+            <listitem>
+              <para>the "that it" column (can also use "that", "verb")</para>
+
+              <para>optional qualifier for interactions that make checks;
+              discussed below</para>
+            </listitem>
+
+            <listitem>
+              <para>the "with arguments" (can also "arguments", "parameters",
+              "with parameters", "for", "value", "for parameters", "value",
+              "reference")</para>
+
+              <para>the first argument, to the interaction, if any. It is
+              possible to perform interactions with multiple arguments (for
+              example, invoking an action); but the
+              <classname>UsingIsisViewerPeer</classname> needs to have a
+              binding for the first argument so that it can knows to interpret
+              any following columns as further arguments.</para>
+            </listitem>
+          </itemizedlist>
+
+          <para>The actual values that go into each of these columns are
+          listed below (<xref linkend="sec.SupportedInteractions" />).</para>
+        </sect3>
+
+        <sect3>
+          <title>The "Perform" Binding</title>
+
+          <para>Of all of the bindings discussed above, the "perform" binding
+          is the most critical because it determines the actual type of
+          interaction to be performed. The valid values that can be provided
+          for the "perform" binding are:</para>
+
+          <itemizedlist>
+            <listitem>
+              <para>check property / check collection / check add to
+              collection / check remove from collection / check action</para>
+
+              <para>These are combined with a value in the "that it" binding;
+              for example "check property XXX is hidden", or "check action XXX
+              is valid for (<emphasis>some argument list</emphasis>)"</para>
+            </listitem>
+
+            <listitem>
+              <para>get property / set property / clear property</para>
+
+              <para>Read from or write to a collection. If setting, a single
+              argument is required</para>
+            </listitem>
+
+            <listitem>
+              <para>get collection / add to collection / remove from
+              collection</para>
+
+              <para>Read or write from a collection. If writing, a single
+              argument is required</para>
+            </listitem>
+
+            <listitem>
+              <para>invoke action</para>
+
+              <para>Invoke action, with 0 to many arguments</para>
+            </listitem>
+
+            <listitem>
+              <para>get property default / get property choices / get action
+              parameter default / get action choices</para>
+
+              <para>To enable the testing of the
+              <methodname>choicesXxx()</methodname> and
+              <methodname>defaultXxx()</methodname> supporting methods</para>
+            </listitem>
+          </itemizedlist>
+
+          <para>Again, see the sections below (<xref
+          linkend="sec.SupportedInteractions" />) for specifics..</para>
+        </sect3>
+      </sect2>
+
+      <sect2>
+        <title>Capture Current</title>
+
+        <para>Once the bindings have been setup, the fixture peer should be
+        called for each row in the table. The
+        <classname>CellBinding</classname> class provides the
+        <methodname>#captureCurrent(...)</methodname> method to capture the
+        relevant value for each row (with the
+        <classname>CellBinding</classname>s obtained directory from the
+        <classname>Scenario</classname> class, eg
+        <methodname>Scenario#getOnObjectBinding()</methodname>).</para>
+
+        <para>For some framework integrations (eg
+        <methodname>Concordion</methodname>) this design introduces a little
+        more complexity than strictly necessary, because the knowledge is
+        already known as to which value relates to which binding. But for
+        other frameworks (eg FitNesse), the <classname>CellBinding</classname>
+        provides a useful abstraction that makes it easy to associate values
+        with each column.</para>
+      </sect2>
+
+      <sect2>
+        <title>Validate</title>
+
+        <para>Once the values for the current row have been captured, they can
+        be validated. The <classname>UsingIsisViewerPeer</classname> class
+        provides the following methods for this:</para>
+
+        <itemizedlist>
+          <listitem>
+            <para><methodname>#validateOnObject():
+            ObjectAdapter</methodname></para>
+
+            <para>Verifies that the current value of the "on object" binding
+            corresponds to a known alias</para>
+          </listitem>
+
+          <listitem>
+            <para><methodname>#validateAliasAs(): String</methodname></para>
+
+            <para>Verifies that the current value of the "alias as" binding is
+            not already in use</para>
+          </listitem>
+
+          <listitem>
+            <para><methodname>#validateOnMember():
+            ObjectMember</methodname></para>
+
+            <para>Verifies that the current value of the "on member" binding
+            corresponds to the name of a member (property name, collection
+            name or action name) of the type of the object being interacted
+            with (ie, as specified in the "on object" binding)</para>
+          </listitem>
+
+          <listitem>
+            <para><methodname>#validatePerform(): Perform</methodname></para>
+
+            <para>Verifies that the current value of the "perform" binding
+            corresponds to a known interaction type for the particular type of
+            member.</para>
+          </listitem>
+        </itemizedlist>
+
+        <para>Again, see the sections below (<xref
+        linkend="sec.SupportedInteractions" />) for specifics.</para>
+      </sect2>
+
+      <sect2>
+        <title>Perform Command</title>
+
+        <para>Once all the validation has been performed, the command can
+        actually be performed. This is done with the
+        <classname>UsingIsisViewerPeer</classname>'s
+        <methodname>#performCommand(ObjectAdapter onObject, String aliasAs,
+        ObjectMember onMember, Perform perform, List&lt;ScenarioCell&gt;
+        args)</methodname> method.</para>
+      </sect2>
+    </sect1>
+
+    <sect1 id="sec.SupportedInteractions">
+      <title>Supported Interactions</title>
+
+      <para>The valid values for the various bindings when interacting with a
+      class members are summarized in the following sections.</para>
+
+      <para>Note:</para>
+
+      <itemizedlist>
+        <listitem>
+          <para>the <acronym>API</acronym> provided by the common library is
+          not type-safe; the values (as provided in
+          <classname>ScenarioCell</classname>) must match the values given
+          here. While it is tempting to refactor the common library to use
+          type safe enums, this would move the need to translate scenario text
+          into each and every <acronym>BDD</acronym> framework integration.
+          The <acronym>API</acronym> is probably correct as it is, even though
+          it is reliant on the exact string phrases that appear in the tables
+          above.</para>
+        </listitem>
+      </itemizedlist>
+
+      <sect2 id="sec.InteractingWithProperties">
+        <title>Interaction with Properties</title>
+
+        <para>The valid values for the various bindings when interacting with
+        a property are summarized below:</para>
+
+        <table>
+          <title>Supported Interactions for Properties</title>
+
+          <tgroup cols="6">
+            <colspec colname="_4" colnum="4" />
+
+            <colspec colname="_5" />
+
+            <colspec colname="_6" />
+
+            <thead>
+              <row>
+                <entry align="center">on object</entry>
+
+                <entry align="center">alias as</entry>
+
+                <entry align="center">perform</entry>
+
+                <entry align="center">using member</entry>
+
+                <entry align="center">that it</entry>
+
+                <entry align="center">value</entry>
+              </row>
+            </thead>
+
+            <tbody>
+              <row>
+                <entry><emphasis>object alias</emphasis></entry>
+
+                <entry><emphasis> </emphasis></entry>
+
+                <entry><classname>check property</classname></entry>
+
+                <entry><emphasis>property name</emphasis></entry>
+
+                <entry nameend="_6" namest="_5"><classname>is
+                hidden</classname><emphasis> </emphasis></entry>
+              </row>
+
+              <row>
+                <entry><emphasis>object alias</emphasis></entry>
+
+                <entry><emphasis> </emphasis></entry>
+
+                <entry><classname>check property</classname></entry>
+
+                <entry><emphasis>property name</emphasis></entry>
+
+                <entry nameend="_6" namest="_5"><classname>is
+                visible</classname><emphasis> </emphasis></entry>
+              </row>
+
+              <row>
+                <entry><emphasis>object alias</emphasis></entry>
+
+                <entry><emphasis> </emphasis></entry>
+
+                <entry><classname>check property</classname></entry>
+
+                <entry><emphasis>property name</emphasis></entry>
+
+                <entry nameend="_6" namest="_5"><classname>is
+                disabled</classname><emphasis> </emphasis></entry>
+              </row>
+
+              <row>
+                <entry><emphasis>object alias</emphasis></entry>
+
+                <entry><emphasis> </emphasis></entry>
+
+                <entry><classname>check property</classname></entry>
+
+                <entry><emphasis>property name</emphasis></entry>
+
+                <entry nameend="_6" namest="_5"><classname>is
+                enabled</classname><emphasis> </emphasis></entry>
+              </row>
+
+              <row>
+                <entry><emphasis>object alias</emphasis></entry>
+
+                <entry><emphasis> </emphasis></entry>
+
+                <entry><classname>check property</classname></entry>
+
+                <entry><emphasis>property name</emphasis></entry>
+
+                <entry nameend="_6" namest="_5"><classname>is
+                empty</classname><emphasis> </emphasis></entry>
+              </row>
+
+              <row>
+                <entry><emphasis>object alias</emphasis></entry>
+
+                <entry><emphasis> </emphasis></entry>
+
+                <entry><classname>check property</classname></entry>
+
+                <entry><emphasis>property name</emphasis></entry>
+
+                <entry nameend="_6" namest="_5"><classname>is not
+                empty</classname><emphasis> </emphasis></entry>
+              </row>
+
+              <row>
+                <entry><emphasis>object alias</emphasis></entry>
+
+                <entry><emphasis> </emphasis></entry>
+
+                <entry><classname>check property</classname></entry>
+
+                <entry><emphasis>property name</emphasis></entry>
+
+                <entry><classname>contains</classname></entry>
+
+                <entry><emphasis>value or object alias</emphasis></entry>
+              </row>
+
+              <row>
+                <entry><emphasis>object alias</emphasis></entry>
+
+                <entry><emphasis> </emphasis></entry>
+
+                <entry><classname>check property</classname></entry>
+
+                <entry><emphasis>property name</emphasis></entry>
+
+                <entry><classname>does not contain</classname></entry>
+
+                <entry><emphasis>value or object alias</emphasis></entry>
+              </row>
+
+              <row>
+                <entry><emphasis>object alias</emphasis></entry>
+
+                <entry><emphasis> </emphasis></entry>
+
+                <entry><classname>check set property</classname></entry>
+
+                <entry><emphasis>property name</emphasis></entry>
+
+                <entry><classname>is valid for</classname></entry>
+
+                <entry><emphasis>value or object alias </emphasis></entry>
+              </row>
+
+              <row>
+                <entry><emphasis>object alias</emphasis></entry>
+
+                <entry><emphasis> </emphasis></entry>
+
+                <entry><classname>check set property</classname></entry>
+
+                <entry><emphasis>property name</emphasis></entry>
+
+                <entry><classname>is not valid for</classname></entry>
+
+                <entry><emphasis> value or object alias</emphasis></entry>
+              </row>
+
+              <row>
+                <entry><emphasis>object alias</emphasis></entry>
+
+                <entry><emphasis> </emphasis></entry>
+
+                <entry><classname>check clear property</classname></entry>
+
+                <entry><emphasis>property name</emphasis></entry>
+
+                <entry nameend="_6" namest="_5"><classname>is
+                valid</classname><emphasis> </emphasis></entry>
+              </row>
+
+              <row>
+                <entry><emphasis>object alias</emphasis></entry>
+
+                <entry><emphasis> </emphasis></entry>
+
+                <entry><classname>check clear property</classname></entry>
+
+                <entry><emphasis>property name</emphasis></entry>
+
+                <entry nameend="_6" namest="_5"><classname>is not
+                valid</classname></entry>
+              </row>
+
+              <row>
+                <entry><emphasis>object alias</emphasis></entry>
+
+                <entry><emphasis> </emphasis></entry>
+
+                <entry><classname>set property</classname></entry>
+
+                <entry><emphasis>property name</emphasis></entry>
+
+                <entry><classname> </classname></entry>
+
+                <entry><emphasis>value or object alias </emphasis></entry>
+              </row>
+
+              <row>
+                <entry><emphasis>object alias</emphasis></entry>
+
+                <entry><emphasis> </emphasis></entry>
+
+                <entry><classname>clear property</classname></entry>
+
+                <entry nameend="_6" namest="_4"><emphasis>property
+                name</emphasis><emphasis> </emphasis></entry>
+              </row>
+
+              <row>
+                <entry><emphasis>object alias</emphasis></entry>
+
+                <entry><emphasis>alias for referenced object
+                </emphasis></entry>
+
+                <entry><classname>get property</classname></entry>
+
+                <entry nameend="_6" namest="_4"><emphasis>property
+                name</emphasis></entry>
+              </row>
+
+              <row>
+                <entry><emphasis>object alias</emphasis></entry>
+
+                <entry><emphasis>alias for default object </emphasis></entry>
+
+                <entry><classname>get property default</classname></entry>
+
+                <entry nameend="_6" namest="_4"><emphasis>property
+                name</emphasis></entry>
+              </row>
+
+              <row>
+                <entry><emphasis>object alias</emphasis></entry>
+
+                <entry><emphasis>alias for list of choices</emphasis></entry>
+
+                <entry><classname>get property choices</classname></entry>
+
+                <entry nameend="_6" namest="_4"><emphasis>property
+                name</emphasis><emphasis> </emphasis></entry>
+              </row>
+            </tbody>
+          </tgroup>
+        </table>
+
+        <para>Obtaining a alias for the (value of) a property only makes sense
+        if the property is a reference type, not value type.</para>
+      </sect2>
+
+      <sect2 id="sec.InteractingWithCollections">
+        <title>Interacting with Collections</title>
+
+        <para>The valid values for the various bindings when interacting with
+        a collection are summarized below:</para>
+
+        <table>
+          <title>Supported Interactions for Collections</title>
+
+          <tgroup cols="6">
+            <colspec colname="_4" colnum="4" />
+
+            <colspec colname="_5" />
+
+            <colspec colname="_6" />
+
+            <thead>
+              <row>
+                <entry align="center">on object</entry>
+
+                <entry align="center">alias as</entry>
+
+                <entry align="center">perform</entry>
+
+                <entry align="center">using member</entry>
+
+                <entry align="center">that it</entry>
+
+                <entry align="center">reference</entry>
+              </row>
+            </thead>
+
+            <tbody>
+              <row>
+                <entry><emphasis>object alias</emphasis></entry>
+
+                <entry><emphasis> </emphasis></entry>
+
+                <entry><classname>check collection</classname></entry>
+
+                <entry><emphasis>collection name</emphasis></entry>
+
+                <entry nameend="_6" namest="_5"><classname>is
+                hidden</classname><emphasis> </emphasis></entry>
+              </row>
+
+              <row>
+                <entry><emphasis>object alias</emphasis>

<TRUNCATED>

[13/19] ISIS-463: mothballing BDD viewer

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/src/main/appended-resources/supplemental-models.xml
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/src/main/appended-resources/supplemental-models.xml b/component/viewer/bdd/src/main/appended-resources/supplemental-models.xml
deleted file mode 100644
index ecd3906..0000000
--- a/component/viewer/bdd/src/main/appended-resources/supplemental-models.xml
+++ /dev/null
@@ -1,106 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor 
-    license agreements. See the NOTICE file distributed with this work for additional 
-    information regarding copyright ownership. The ASF licenses this file to 
-    you under the Apache License, Version 2.0 (the "License"); you may not use 
-    this file except in compliance with the License. You may obtain a copy of 
-    the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required 
-    by applicable law or agreed to in writing, software distributed under the 
-    License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS 
-    OF ANY KIND, either express or implied. See the License for the specific 
-    language governing permissions and limitations under the License. -->
-<supplementalDataModels xmlns="http://maven.apache.org/supplemental-model/1.0.0"
-                        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-                        xsi:schemaLocation="http://maven.apache.org/supplemental-model/1.0.0 http://maven.apache.org/xsd/supplemental-model-1.0.0.xsd">
-
-  <supplement>
-    <project>
-      <groupId>aopalliance</groupId>
-      <artifactId>aopalliance</artifactId>
-      <version>1.0</version>
-      <licenses>
-          <license>
-              <name>Public Domain</name>
-          </license>
-      </licenses>
-    </project>
-  </supplement>
-
-  <supplement>
-   	<!-- not quite sure why licenses:download-license flags this, since license info seems to be in its POM -->
-    <project>
-		<groupId>org.datanucleus</groupId>
-	    <artifactId>datanucleus-jodatime</artifactId>
-	    <version>3.1.1</version>
-          <licenses>
-			<license>
-	            <name>The Apache Software License, Version 2.0</name>
-	            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
-	        </license>
-	    </licenses>
-    </project>
-  </supplement>
-
-  <supplement>
-    <project>
-      <groupId>org.scannotation</groupId>
-      <artifactId>scannotation</artifactId>
-      <version>1.0.3</version>
-      <licenses>
-        <license>
-            <name>The Apache Software License, Version 2.0</name>
-            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
-            <distribution>repo</distribution>          
-        </license>
-      </licenses>
-    </project>
-  </supplement>
-    
-  <supplement>
-    <project>
-      <groupId>dom4j</groupId>
-      <artifactId>dom4j</artifactId>
-      <version>1.6.1</version>
-      <licenses>
-        <license>
-            <name>BSD License</name>
-            <url>http://dom4j.sourceforge.net/dom4j-1.6.1/license.html</url>
-            <distribution>repo</distribution>          
-        </license>
-      </licenses>
-    </project>
-  </supplement>
-
-  <supplement>
-    <project>
-      <groupId>net.jcip</groupId>
-      <artifactId>jcip-annotations</artifactId>
-      <version>1.0</version>
-      <licenses>
-        <license>
-            <name>Creative Commons Attribution 2.5 License</name>
-            <url>http://creativecommons.org/licenses/by/2.5/</url>
-            <distribution>repo</distribution>          
-        </license>
-      </licenses>
-    </project>
-  </supplement>
-  
-
-  <supplement>
-    <project>
-      <groupId>xalan</groupId>
-      <artifactId>xalan</artifactId>
-      <version>2.7.0</version>
-      <licenses>
-        <license>
-            <name>The Apache Software License, Version 2.0</name>
-            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
-            <distribution>repo</distribution>          
-        </license>
-      </licenses>
-    </project>
-  </supplement>
-
- 
-</supplementalDataModels>

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/src/site/apt/index.apt
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/src/site/apt/index.apt b/component/viewer/bdd/src/site/apt/index.apt
deleted file mode 100644
index 8ed00f0..0000000
--- a/component/viewer/bdd/src/site/apt/index.apt
+++ /dev/null
@@ -1,52 +0,0 @@
-~~  Licensed to the Apache Software Foundation (ASF) under one
-~~  or more contributor license agreements.  See the NOTICE file
-~~  distributed with this work for additional information
-~~  regarding copyright ownership.  The ASF licenses this file
-~~  to you under the Apache License, Version 2.0 (the
-~~  "License"); you may not use this file except in compliance
-~~  with the License.  You may obtain a copy of the License at
-~~
-~~        http://www.apache.org/licenses/LICENSE-2.0
-~~
-~~  Unless required by applicable law or agreed to in writing,
-~~  software distributed under the License is distributed on an
-~~  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-~~  KIND, either express or implied.  See the License for the
-~~  specific language governing permissions and limitations
-~~  under the License.
-
-
-
-BDD Viewer
-
- The <bdd> viewer provides the ability to story-test the functionality
- in your domain objects, using a behaviour-driven design (BDD)
- framework.
- 
- Currently the only framework supported is {{{http://concordion.org}Concordion}},
- though we expect others to be supported in the future.
-  
-Alternatives
-
- The {{{../junit/index.html}JUnit}} viewer can also be used for testing.
- However, with the junit viewer the actual test is written in {{{http://junit.org}JUnit}}
- (rather than XHTML as is the case for Concordion) and so is closer to a 
- developer test than a story test.
-
-A note on licenses
-
-  The <bdd> viewer itself is licensed under Apache License v2.  However, the
-  Concordion integration (naturally enough) depends upon {{{http://concordion.org}Concordion}},
-  which is licensed under Apache License v2 but in turn depends upon 
-  {{{http://xom.nu}Xom}}, which unfortunately has an LGPL license.  Apache projects
-  are {{{http://www.apache.org/legal/resolved.html#category-x}not allowed}} to have dependencies 
-  on LGPL projects.
-  
-  There is a workaround.  Isis' pom.xml files specifically exclude the XOM dependency, meaning
-  that they are compliant with Apache's licensing restrictions.  However, any application
-  code that uses the BDD viewer must explicitly add its own dependency to the XOM library.
-  You'll find that the pom.xml files generated by the 
-  {{{../../quick-start.html}quickstart archetype}} do indeed do this).
-   
-  If you are unhappy to introduce this dependency to LGPL in your own code, then you will
-  not be able to use the Concordion integration.

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/src/site/apt/jottings.apt
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/src/site/apt/jottings.apt b/component/viewer/bdd/src/site/apt/jottings.apt
deleted file mode 100755
index c5d1200..0000000
--- a/component/viewer/bdd/src/site/apt/jottings.apt
+++ /dev/null
@@ -1,24 +0,0 @@
-~~  Licensed to the Apache Software Foundation (ASF) under one
-~~  or more contributor license agreements.  See the NOTICE file
-~~  distributed with this work for additional information
-~~  regarding copyright ownership.  The ASF licenses this file
-~~  to you under the Apache License, Version 2.0 (the
-~~  "License"); you may not use this file except in compliance
-~~  with the License.  You may obtain a copy of the License at
-~~
-~~        http://www.apache.org/licenses/LICENSE-2.0
-~~
-~~  Unless required by applicable law or agreed to in writing,
-~~  software distributed under the License is distributed on an
-~~  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-~~  KIND, either express or implied.  See the License for the
-~~  specific language governing permissions and limitations
-~~  under the License.
-
-
-
-Jottings
- 
-  This page is to capture any random jottings relating to this module prior 
-  to being moved into formal documentation. 
- 

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/src/site/resources/dtd/xhtml-lat1.ent
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/src/site/resources/dtd/xhtml-lat1.ent b/component/viewer/bdd/src/site/resources/dtd/xhtml-lat1.ent
deleted file mode 100644
index ffee223..0000000
--- a/component/viewer/bdd/src/site/resources/dtd/xhtml-lat1.ent
+++ /dev/null
@@ -1,196 +0,0 @@
-<!-- Portions (C) International Organization for Standardization 1986
-     Permission to copy in any form is granted for use with
-     conforming SGML systems and applications as defined in
-     ISO 8879, provided this notice is included in all copies.
--->
-<!-- Character entity set. Typical invocation:
-    <!ENTITY % HTMLlat1 PUBLIC
-       "-//W3C//ENTITIES Latin 1 for XHTML//EN"
-       "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent">
-    %HTMLlat1;
--->
-
-<!ENTITY nbsp   "&#160;"> <!-- no-break space = non-breaking space,
-                                  U+00A0 ISOnum -->
-<!ENTITY iexcl  "&#161;"> <!-- inverted exclamation mark, U+00A1 ISOnum -->
-<!ENTITY cent   "&#162;"> <!-- cent sign, U+00A2 ISOnum -->
-<!ENTITY pound  "&#163;"> <!-- pound sign, U+00A3 ISOnum -->
-<!ENTITY curren "&#164;"> <!-- currency sign, U+00A4 ISOnum -->
-<!ENTITY yen    "&#165;"> <!-- yen sign = yuan sign, U+00A5 ISOnum -->
-<!ENTITY brvbar "&#166;"> <!-- broken bar = broken vertical bar,
-                                  U+00A6 ISOnum -->
-<!ENTITY sect   "&#167;"> <!-- section sign, U+00A7 ISOnum -->
-<!ENTITY uml    "&#168;"> <!-- diaeresis = spacing diaeresis,
-                                  U+00A8 ISOdia -->
-<!ENTITY copy   "&#169;"> <!-- copyright sign, U+00A9 ISOnum -->
-<!ENTITY ordf   "&#170;"> <!-- feminine ordinal indicator, U+00AA ISOnum -->
-<!ENTITY laquo  "&#171;"> <!-- left-pointing double angle quotation mark
-                                  = left pointing guillemet, U+00AB ISOnum -->
-<!ENTITY not    "&#172;"> <!-- not sign = angled dash,
-                                  U+00AC ISOnum -->
-<!ENTITY shy    "&#173;"> <!-- soft hyphen = discretionary hyphen,
-                                  U+00AD ISOnum -->
-<!ENTITY reg    "&#174;"> <!-- registered sign = registered trade mark sign,
-                                  U+00AE ISOnum -->
-<!ENTITY macr   "&#175;"> <!-- macron = spacing macron = overline
-                                  = APL overbar, U+00AF ISOdia -->
-<!ENTITY deg    "&#176;"> <!-- degree sign, U+00B0 ISOnum -->
-<!ENTITY plusmn "&#177;"> <!-- plus-minus sign = plus-or-minus sign,
-                                  U+00B1 ISOnum -->
-<!ENTITY sup2   "&#178;"> <!-- superscript two = superscript digit two
-                                  = squared, U+00B2 ISOnum -->
-<!ENTITY sup3   "&#179;"> <!-- superscript three = superscript digit three
-                                  = cubed, U+00B3 ISOnum -->
-<!ENTITY acute  "&#180;"> <!-- acute accent = spacing acute,
-                                  U+00B4 ISOdia -->
-<!ENTITY micro  "&#181;"> <!-- micro sign, U+00B5 ISOnum -->
-<!ENTITY para   "&#182;"> <!-- pilcrow sign = paragraph sign,
-                                  U+00B6 ISOnum -->
-<!ENTITY middot "&#183;"> <!-- middle dot = Georgian comma
-                                  = Greek middle dot, U+00B7 ISOnum -->
-<!ENTITY cedil  "&#184;"> <!-- cedilla = spacing cedilla, U+00B8 ISOdia -->
-<!ENTITY sup1   "&#185;"> <!-- superscript one = superscript digit one,
-                                  U+00B9 ISOnum -->
-<!ENTITY ordm   "&#186;"> <!-- masculine ordinal indicator,
-                                  U+00BA ISOnum -->
-<!ENTITY raquo  "&#187;"> <!-- right-pointing double angle quotation mark
-                                  = right pointing guillemet, U+00BB ISOnum -->
-<!ENTITY frac14 "&#188;"> <!-- vulgar fraction one quarter
-                                  = fraction one quarter, U+00BC ISOnum -->
-<!ENTITY frac12 "&#189;"> <!-- vulgar fraction one half
-                                  = fraction one half, U+00BD ISOnum -->
-<!ENTITY frac34 "&#190;"> <!-- vulgar fraction three quarters
-                                  = fraction three quarters, U+00BE ISOnum -->
-<!ENTITY iquest "&#191;"> <!-- inverted question mark
-                                  = turned question mark, U+00BF ISOnum -->
-<!ENTITY Agrave "&#192;"> <!-- latin capital letter A with grave
-                                  = latin capital letter A grave,
-                                  U+00C0 ISOlat1 -->
-<!ENTITY Aacute "&#193;"> <!-- latin capital letter A with acute,
-                                  U+00C1 ISOlat1 -->
-<!ENTITY Acirc  "&#194;"> <!-- latin capital letter A with circumflex,
-                                  U+00C2 ISOlat1 -->
-<!ENTITY Atilde "&#195;"> <!-- latin capital letter A with tilde,
-                                  U+00C3 ISOlat1 -->
-<!ENTITY Auml   "&#196;"> <!-- latin capital letter A with diaeresis,
-                                  U+00C4 ISOlat1 -->
-<!ENTITY Aring  "&#197;"> <!-- latin capital letter A with ring above
-                                  = latin capital letter A ring,
-                                  U+00C5 ISOlat1 -->
-<!ENTITY AElig  "&#198;"> <!-- latin capital letter AE
-                                  = latin capital ligature AE,
-                                  U+00C6 ISOlat1 -->
-<!ENTITY Ccedil "&#199;"> <!-- latin capital letter C with cedilla,
-                                  U+00C7 ISOlat1 -->
-<!ENTITY Egrave "&#200;"> <!-- latin capital letter E with grave,
-                                  U+00C8 ISOlat1 -->
-<!ENTITY Eacute "&#201;"> <!-- latin capital letter E with acute,
-                                  U+00C9 ISOlat1 -->
-<!ENTITY Ecirc  "&#202;"> <!-- latin capital letter E with circumflex,
-                                  U+00CA ISOlat1 -->
-<!ENTITY Euml   "&#203;"> <!-- latin capital letter E with diaeresis,
-                                  U+00CB ISOlat1 -->
-<!ENTITY Igrave "&#204;"> <!-- latin capital letter I with grave,
-                                  U+00CC ISOlat1 -->
-<!ENTITY Iacute "&#205;"> <!-- latin capital letter I with acute,
-                                  U+00CD ISOlat1 -->
-<!ENTITY Icirc  "&#206;"> <!-- latin capital letter I with circumflex,
-                                  U+00CE ISOlat1 -->
-<!ENTITY Iuml   "&#207;"> <!-- latin capital letter I with diaeresis,
-                                  U+00CF ISOlat1 -->
-<!ENTITY ETH    "&#208;"> <!-- latin capital letter ETH, U+00D0 ISOlat1 -->
-<!ENTITY Ntilde "&#209;"> <!-- latin capital letter N with tilde,
-                                  U+00D1 ISOlat1 -->
-<!ENTITY Ograve "&#210;"> <!-- latin capital letter O with grave,
-                                  U+00D2 ISOlat1 -->
-<!ENTITY Oacute "&#211;"> <!-- latin capital letter O with acute,
-                                  U+00D3 ISOlat1 -->
-<!ENTITY Ocirc  "&#212;"> <!-- latin capital letter O with circumflex,
-                                  U+00D4 ISOlat1 -->
-<!ENTITY Otilde "&#213;"> <!-- latin capital letter O with tilde,
-                                  U+00D5 ISOlat1 -->
-<!ENTITY Ouml   "&#214;"> <!-- latin capital letter O with diaeresis,
-                                  U+00D6 ISOlat1 -->
-<!ENTITY times  "&#215;"> <!-- multiplication sign, U+00D7 ISOnum -->
-<!ENTITY Oslash "&#216;"> <!-- latin capital letter O with stroke
-                                  = latin capital letter O slash,
-                                  U+00D8 ISOlat1 -->
-<!ENTITY Ugrave "&#217;"> <!-- latin capital letter U with grave,
-                                  U+00D9 ISOlat1 -->
-<!ENTITY Uacute "&#218;"> <!-- latin capital letter U with acute,
-                                  U+00DA ISOlat1 -->
-<!ENTITY Ucirc  "&#219;"> <!-- latin capital letter U with circumflex,
-                                  U+00DB ISOlat1 -->
-<!ENTITY Uuml   "&#220;"> <!-- latin capital letter U with diaeresis,
-                                  U+00DC ISOlat1 -->
-<!ENTITY Yacute "&#221;"> <!-- latin capital letter Y with acute,
-                                  U+00DD ISOlat1 -->
-<!ENTITY THORN  "&#222;"> <!-- latin capital letter THORN,
-                                  U+00DE ISOlat1 -->
-<!ENTITY szlig  "&#223;"> <!-- latin small letter sharp s = ess-zed,
-                                  U+00DF ISOlat1 -->
-<!ENTITY agrave "&#224;"> <!-- latin small letter a with grave
-                                  = latin small letter a grave,
-                                  U+00E0 ISOlat1 -->
-<!ENTITY aacute "&#225;"> <!-- latin small letter a with acute,
-                                  U+00E1 ISOlat1 -->
-<!ENTITY acirc  "&#226;"> <!-- latin small letter a with circumflex,
-                                  U+00E2 ISOlat1 -->
-<!ENTITY atilde "&#227;"> <!-- latin small letter a with tilde,
-                                  U+00E3 ISOlat1 -->
-<!ENTITY auml   "&#228;"> <!-- latin small letter a with diaeresis,
-                                  U+00E4 ISOlat1 -->
-<!ENTITY aring  "&#229;"> <!-- latin small letter a with ring above
-                                  = latin small letter a ring,
-                                  U+00E5 ISOlat1 -->
-<!ENTITY aelig  "&#230;"> <!-- latin small letter ae
-                                  = latin small ligature ae, U+00E6 ISOlat1 -->
-<!ENTITY ccedil "&#231;"> <!-- latin small letter c with cedilla,
-                                  U+00E7 ISOlat1 -->
-<!ENTITY egrave "&#232;"> <!-- latin small letter e with grave,
-                                  U+00E8 ISOlat1 -->
-<!ENTITY eacute "&#233;"> <!-- latin small letter e with acute,
-                                  U+00E9 ISOlat1 -->
-<!ENTITY ecirc  "&#234;"> <!-- latin small letter e with circumflex,
-                                  U+00EA ISOlat1 -->
-<!ENTITY euml   "&#235;"> <!-- latin small letter e with diaeresis,
-                                  U+00EB ISOlat1 -->
-<!ENTITY igrave "&#236;"> <!-- latin small letter i with grave,
-                                  U+00EC ISOlat1 -->
-<!ENTITY iacute "&#237;"> <!-- latin small letter i with acute,
-                                  U+00ED ISOlat1 -->
-<!ENTITY icirc  "&#238;"> <!-- latin small letter i with circumflex,
-                                  U+00EE ISOlat1 -->
-<!ENTITY iuml   "&#239;"> <!-- latin small letter i with diaeresis,
-                                  U+00EF ISOlat1 -->
-<!ENTITY eth    "&#240;"> <!-- latin small letter eth, U+00F0 ISOlat1 -->
-<!ENTITY ntilde "&#241;"> <!-- latin small letter n with tilde,
-                                  U+00F1 ISOlat1 -->
-<!ENTITY ograve "&#242;"> <!-- latin small letter o with grave,
-                                  U+00F2 ISOlat1 -->
-<!ENTITY oacute "&#243;"> <!-- latin small letter o with acute,
-                                  U+00F3 ISOlat1 -->
-<!ENTITY ocirc  "&#244;"> <!-- latin small letter o with circumflex,
-                                  U+00F4 ISOlat1 -->
-<!ENTITY otilde "&#245;"> <!-- latin small letter o with tilde,
-                                  U+00F5 ISOlat1 -->
-<!ENTITY ouml   "&#246;"> <!-- latin small letter o with diaeresis,
-                                  U+00F6 ISOlat1 -->
-<!ENTITY divide "&#247;"> <!-- division sign, U+00F7 ISOnum -->
-<!ENTITY oslash "&#248;"> <!-- latin small letter o with stroke,
-                                  = latin small letter o slash,
-                                  U+00F8 ISOlat1 -->
-<!ENTITY ugrave "&#249;"> <!-- latin small letter u with grave,
-                                  U+00F9 ISOlat1 -->
-<!ENTITY uacute "&#250;"> <!-- latin small letter u with acute,
-                                  U+00FA ISOlat1 -->
-<!ENTITY ucirc  "&#251;"> <!-- latin small letter u with circumflex,
-                                  U+00FB ISOlat1 -->
-<!ENTITY uuml   "&#252;"> <!-- latin small letter u with diaeresis,
-                                  U+00FC ISOlat1 -->
-<!ENTITY yacute "&#253;"> <!-- latin small letter y with acute,
-                                  U+00FD ISOlat1 -->
-<!ENTITY thorn  "&#254;"> <!-- latin small letter thorn,
-                                  U+00FE ISOlat1 -->
-<!ENTITY yuml   "&#255;"> <!-- latin small letter y with diaeresis,
-                                  U+00FF ISOlat1 -->

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/src/site/resources/dtd/xhtml-special.ent
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/src/site/resources/dtd/xhtml-special.ent b/component/viewer/bdd/src/site/resources/dtd/xhtml-special.ent
deleted file mode 100644
index ca358b2..0000000
--- a/component/viewer/bdd/src/site/resources/dtd/xhtml-special.ent
+++ /dev/null
@@ -1,80 +0,0 @@
-<!-- Special characters for XHTML -->
-
-<!-- Character entity set. Typical invocation:
-     <!ENTITY % HTMLspecial PUBLIC
-        "-//W3C//ENTITIES Special for XHTML//EN"
-        "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent">
-     %HTMLspecial;
--->
-
-<!-- Portions (C) International Organization for Standardization 1986:
-     Permission to copy in any form is granted for use with
-     conforming SGML systems and applications as defined in
-     ISO 8879, provided this notice is included in all copies.
--->
-
-<!-- Relevant ISO entity set is given unless names are newly introduced.
-     New names (i.e., not in ISO 8879 list) do not clash with any
-     existing ISO 8879 entity names. ISO 10646 character numbers
-     are given for each character, in hex. values are decimal
-     conversions of the ISO 10646 values and refer to the document
-     character set. Names are Unicode names. 
--->
-
-<!-- C0 Controls and Basic Latin -->
-<!ENTITY quot    "&#34;"> <!--  quotation mark, U+0022 ISOnum -->
-<!ENTITY amp     "&#38;#38;"> <!--  ampersand, U+0026 ISOnum -->
-<!ENTITY lt      "&#38;#60;"> <!--  less-than sign, U+003C ISOnum -->
-<!ENTITY gt      "&#62;"> <!--  greater-than sign, U+003E ISOnum -->
-<!ENTITY apos	 "&#39;"> <!--  apostrophe = APL quote, U+0027 ISOnum -->
-
-<!-- Latin Extended-A -->
-<!ENTITY OElig   "&#338;"> <!--  latin capital ligature OE,
-                                    U+0152 ISOlat2 -->
-<!ENTITY oelig   "&#339;"> <!--  latin small ligature oe, U+0153 ISOlat2 -->
-<!-- ligature is a misnomer, this is a separate character in some languages -->
-<!ENTITY Scaron  "&#352;"> <!--  latin capital letter S with caron,
-                                    U+0160 ISOlat2 -->
-<!ENTITY scaron  "&#353;"> <!--  latin small letter s with caron,
-                                    U+0161 ISOlat2 -->
-<!ENTITY Yuml    "&#376;"> <!--  latin capital letter Y with diaeresis,
-                                    U+0178 ISOlat2 -->
-
-<!-- Spacing Modifier Letters -->
-<!ENTITY circ    "&#710;"> <!--  modifier letter circumflex accent,
-                                    U+02C6 ISOpub -->
-<!ENTITY tilde   "&#732;"> <!--  small tilde, U+02DC ISOdia -->
-
-<!-- General Punctuation -->
-<!ENTITY ensp    "&#8194;"> <!-- en space, U+2002 ISOpub -->
-<!ENTITY emsp    "&#8195;"> <!-- em space, U+2003 ISOpub -->
-<!ENTITY thinsp  "&#8201;"> <!-- thin space, U+2009 ISOpub -->
-<!ENTITY zwnj    "&#8204;"> <!-- zero width non-joiner,
-                                    U+200C NEW RFC 2070 -->
-<!ENTITY zwj     "&#8205;"> <!-- zero width joiner, U+200D NEW RFC 2070 -->
-<!ENTITY lrm     "&#8206;"> <!-- left-to-right mark, U+200E NEW RFC 2070 -->
-<!ENTITY rlm     "&#8207;"> <!-- right-to-left mark, U+200F NEW RFC 2070 -->
-<!ENTITY ndash   "&#8211;"> <!-- en dash, U+2013 ISOpub -->
-<!ENTITY mdash   "&#8212;"> <!-- em dash, U+2014 ISOpub -->
-<!ENTITY lsquo   "&#8216;"> <!-- left single quotation mark,
-                                    U+2018 ISOnum -->
-<!ENTITY rsquo   "&#8217;"> <!-- right single quotation mark,
-                                    U+2019 ISOnum -->
-<!ENTITY sbquo   "&#8218;"> <!-- single low-9 quotation mark, U+201A NEW -->
-<!ENTITY ldquo   "&#8220;"> <!-- left double quotation mark,
-                                    U+201C ISOnum -->
-<!ENTITY rdquo   "&#8221;"> <!-- right double quotation mark,
-                                    U+201D ISOnum -->
-<!ENTITY bdquo   "&#8222;"> <!-- double low-9 quotation mark, U+201E NEW -->
-<!ENTITY dagger  "&#8224;"> <!-- dagger, U+2020 ISOpub -->
-<!ENTITY Dagger  "&#8225;"> <!-- double dagger, U+2021 ISOpub -->
-<!ENTITY permil  "&#8240;"> <!-- per mille sign, U+2030 ISOtech -->
-<!ENTITY lsaquo  "&#8249;"> <!-- single left-pointing angle quotation mark,
-                                    U+2039 ISO proposed -->
-<!-- lsaquo is proposed but not yet ISO standardized -->
-<!ENTITY rsaquo  "&#8250;"> <!-- single right-pointing angle quotation mark,
-                                    U+203A ISO proposed -->
-<!-- rsaquo is proposed but not yet ISO standardized -->
-
-<!-- Currency Symbols -->
-<!ENTITY euro   "&#8364;"> <!--  euro sign, U+20AC NEW -->

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/src/site/resources/dtd/xhtml-symbol.ent
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/src/site/resources/dtd/xhtml-symbol.ent b/component/viewer/bdd/src/site/resources/dtd/xhtml-symbol.ent
deleted file mode 100644
index 63c2abf..0000000
--- a/component/viewer/bdd/src/site/resources/dtd/xhtml-symbol.ent
+++ /dev/null
@@ -1,237 +0,0 @@
-<!-- Mathematical, Greek and Symbolic characters for XHTML -->
-
-<!-- Character entity set. Typical invocation:
-     <!ENTITY % HTMLsymbol PUBLIC
-        "-//W3C//ENTITIES Symbols for XHTML//EN"
-        "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent">
-     %HTMLsymbol;
--->
-
-<!-- Portions (C) International Organization for Standardization 1986:
-     Permission to copy in any form is granted for use with
-     conforming SGML systems and applications as defined in
-     ISO 8879, provided this notice is included in all copies.
--->
-
-<!-- Relevant ISO entity set is given unless names are newly introduced.
-     New names (i.e., not in ISO 8879 list) do not clash with any
-     existing ISO 8879 entity names. ISO 10646 character numbers
-     are given for each character, in hex. values are decimal
-     conversions of the ISO 10646 values and refer to the document
-     character set. Names are Unicode names. 
--->
-
-<!-- Latin Extended-B -->
-<!ENTITY fnof     "&#402;"> <!-- latin small letter f with hook = function
-                                    = florin, U+0192 ISOtech -->
-
-<!-- Greek -->
-<!ENTITY Alpha    "&#913;"> <!-- greek capital letter alpha, U+0391 -->
-<!ENTITY Beta     "&#914;"> <!-- greek capital letter beta, U+0392 -->
-<!ENTITY Gamma    "&#915;"> <!-- greek capital letter gamma,
-                                    U+0393 ISOgrk3 -->
-<!ENTITY Delta    "&#916;"> <!-- greek capital letter delta,
-                                    U+0394 ISOgrk3 -->
-<!ENTITY Epsilon  "&#917;"> <!-- greek capital letter epsilon, U+0395 -->
-<!ENTITY Zeta     "&#918;"> <!-- greek capital letter zeta, U+0396 -->
-<!ENTITY Eta      "&#919;"> <!-- greek capital letter eta, U+0397 -->
-<!ENTITY Theta    "&#920;"> <!-- greek capital letter theta,
-                                    U+0398 ISOgrk3 -->
-<!ENTITY Iota     "&#921;"> <!-- greek capital letter iota, U+0399 -->
-<!ENTITY Kappa    "&#922;"> <!-- greek capital letter kappa, U+039A -->
-<!ENTITY Lambda   "&#923;"> <!-- greek capital letter lamda,
-                                    U+039B ISOgrk3 -->
-<!ENTITY Mu       "&#924;"> <!-- greek capital letter mu, U+039C -->
-<!ENTITY Nu       "&#925;"> <!-- greek capital letter nu, U+039D -->
-<!ENTITY Xi       "&#926;"> <!-- greek capital letter xi, U+039E ISOgrk3 -->
-<!ENTITY Omicron  "&#927;"> <!-- greek capital letter omicron, U+039F -->
-<!ENTITY Pi       "&#928;"> <!-- greek capital letter pi, U+03A0 ISOgrk3 -->
-<!ENTITY Rho      "&#929;"> <!-- greek capital letter rho, U+03A1 -->
-<!-- there is no Sigmaf, and no U+03A2 character either -->
-<!ENTITY Sigma    "&#931;"> <!-- greek capital letter sigma,
-                                    U+03A3 ISOgrk3 -->
-<!ENTITY Tau      "&#932;"> <!-- greek capital letter tau, U+03A4 -->
-<!ENTITY Upsilon  "&#933;"> <!-- greek capital letter upsilon,
-                                    U+03A5 ISOgrk3 -->
-<!ENTITY Phi      "&#934;"> <!-- greek capital letter phi,
-                                    U+03A6 ISOgrk3 -->
-<!ENTITY Chi      "&#935;"> <!-- greek capital letter chi, U+03A7 -->
-<!ENTITY Psi      "&#936;"> <!-- greek capital letter psi,
-                                    U+03A8 ISOgrk3 -->
-<!ENTITY Omega    "&#937;"> <!-- greek capital letter omega,
-                                    U+03A9 ISOgrk3 -->
-
-<!ENTITY alpha    "&#945;"> <!-- greek small letter alpha,
-                                    U+03B1 ISOgrk3 -->
-<!ENTITY beta     "&#946;"> <!-- greek small letter beta, U+03B2 ISOgrk3 -->
-<!ENTITY gamma    "&#947;"> <!-- greek small letter gamma,
-                                    U+03B3 ISOgrk3 -->
-<!ENTITY delta    "&#948;"> <!-- greek small letter delta,
-                                    U+03B4 ISOgrk3 -->
-<!ENTITY epsilon  "&#949;"> <!-- greek small letter epsilon,
-                                    U+03B5 ISOgrk3 -->
-<!ENTITY zeta     "&#950;"> <!-- greek small letter zeta, U+03B6 ISOgrk3 -->
-<!ENTITY eta      "&#951;"> <!-- greek small letter eta, U+03B7 ISOgrk3 -->
-<!ENTITY theta    "&#952;"> <!-- greek small letter theta,
-                                    U+03B8 ISOgrk3 -->
-<!ENTITY iota     "&#953;"> <!-- greek small letter iota, U+03B9 ISOgrk3 -->
-<!ENTITY kappa    "&#954;"> <!-- greek small letter kappa,
-                                    U+03BA ISOgrk3 -->
-<!ENTITY lambda   "&#955;"> <!-- greek small letter lamda,
-                                    U+03BB ISOgrk3 -->
-<!ENTITY mu       "&#956;"> <!-- greek small letter mu, U+03BC ISOgrk3 -->
-<!ENTITY nu       "&#957;"> <!-- greek small letter nu, U+03BD ISOgrk3 -->
-<!ENTITY xi       "&#958;"> <!-- greek small letter xi, U+03BE ISOgrk3 -->
-<!ENTITY omicron  "&#959;"> <!-- greek small letter omicron, U+03BF NEW -->
-<!ENTITY pi       "&#960;"> <!-- greek small letter pi, U+03C0 ISOgrk3 -->
-<!ENTITY rho      "&#961;"> <!-- greek small letter rho, U+03C1 ISOgrk3 -->
-<!ENTITY sigmaf   "&#962;"> <!-- greek small letter final sigma,
-                                    U+03C2 ISOgrk3 -->
-<!ENTITY sigma    "&#963;"> <!-- greek small letter sigma,
-                                    U+03C3 ISOgrk3 -->
-<!ENTITY tau      "&#964;"> <!-- greek small letter tau, U+03C4 ISOgrk3 -->
-<!ENTITY upsilon  "&#965;"> <!-- greek small letter upsilon,
-                                    U+03C5 ISOgrk3 -->
-<!ENTITY phi      "&#966;"> <!-- greek small letter phi, U+03C6 ISOgrk3 -->
-<!ENTITY chi      "&#967;"> <!-- greek small letter chi, U+03C7 ISOgrk3 -->
-<!ENTITY psi      "&#968;"> <!-- greek small letter psi, U+03C8 ISOgrk3 -->
-<!ENTITY omega    "&#969;"> <!-- greek small letter omega,
-                                    U+03C9 ISOgrk3 -->
-<!ENTITY thetasym "&#977;"> <!-- greek theta symbol,
-                                    U+03D1 NEW -->
-<!ENTITY upsih    "&#978;"> <!-- greek upsilon with hook symbol,
-                                    U+03D2 NEW -->
-<!ENTITY piv      "&#982;"> <!-- greek pi symbol, U+03D6 ISOgrk3 -->
-
-<!-- General Punctuation -->
-<!ENTITY bull     "&#8226;"> <!-- bullet = black small circle,
-                                     U+2022 ISOpub  -->
-<!-- bullet is NOT the same as bullet operator, U+2219 -->
-<!ENTITY hellip   "&#8230;"> <!-- horizontal ellipsis = three dot leader,
-                                     U+2026 ISOpub  -->
-<!ENTITY prime    "&#8242;"> <!-- prime = minutes = feet, U+2032 ISOtech -->
-<!ENTITY Prime    "&#8243;"> <!-- double prime = seconds = inches,
-                                     U+2033 ISOtech -->
-<!ENTITY oline    "&#8254;"> <!-- overline = spacing overscore,
-                                     U+203E NEW -->
-<!ENTITY frasl    "&#8260;"> <!-- fraction slash, U+2044 NEW -->
-
-<!-- Letterlike Symbols -->
-<!ENTITY weierp   "&#8472;"> <!-- script capital P = power set
-                                     = Weierstrass p, U+2118 ISOamso -->
-<!ENTITY image    "&#8465;"> <!-- black-letter capital I = imaginary part,
-                                     U+2111 ISOamso -->
-<!ENTITY real     "&#8476;"> <!-- black-letter capital R = real part symbol,
-                                     U+211C ISOamso -->
-<!ENTITY trade    "&#8482;"> <!-- trade mark sign, U+2122 ISOnum -->
-<!ENTITY alefsym  "&#8501;"> <!-- alef symbol = first transfinite cardinal,
-                                     U+2135 NEW -->
-<!-- alef symbol is NOT the same as hebrew letter alef,
-     U+05D0 although the same glyph could be used to depict both characters -->
-
-<!-- Arrows -->
-<!ENTITY larr     "&#8592;"> <!-- leftwards arrow, U+2190 ISOnum -->
-<!ENTITY uarr     "&#8593;"> <!-- upwards arrow, U+2191 ISOnum-->
-<!ENTITY rarr     "&#8594;"> <!-- rightwards arrow, U+2192 ISOnum -->
-<!ENTITY darr     "&#8595;"> <!-- downwards arrow, U+2193 ISOnum -->
-<!ENTITY harr     "&#8596;"> <!-- left right arrow, U+2194 ISOamsa -->
-<!ENTITY crarr    "&#8629;"> <!-- downwards arrow with corner leftwards
-                                     = carriage return, U+21B5 NEW -->
-<!ENTITY lArr     "&#8656;"> <!-- leftwards double arrow, U+21D0 ISOtech -->
-<!-- Unicode does not say that lArr is the same as the 'is implied by' arrow
-    but also does not have any other character for that function. So lArr can
-    be used for 'is implied by' as ISOtech suggests -->
-<!ENTITY uArr     "&#8657;"> <!-- upwards double arrow, U+21D1 ISOamsa -->
-<!ENTITY rArr     "&#8658;"> <!-- rightwards double arrow,
-                                     U+21D2 ISOtech -->
-<!-- Unicode does not say this is the 'implies' character but does not have 
-     another character with this function so rArr can be used for 'implies'
-     as ISOtech suggests -->
-<!ENTITY dArr     "&#8659;"> <!-- downwards double arrow, U+21D3 ISOamsa -->
-<!ENTITY hArr     "&#8660;"> <!-- left right double arrow,
-                                     U+21D4 ISOamsa -->
-
-<!-- Mathematical Operators -->
-<!ENTITY forall   "&#8704;"> <!-- for all, U+2200 ISOtech -->
-<!ENTITY part     "&#8706;"> <!-- partial differential, U+2202 ISOtech  -->
-<!ENTITY exist    "&#8707;"> <!-- there exists, U+2203 ISOtech -->
-<!ENTITY empty    "&#8709;"> <!-- empty set = null set, U+2205 ISOamso -->
-<!ENTITY nabla    "&#8711;"> <!-- nabla = backward difference,
-                                     U+2207 ISOtech -->
-<!ENTITY isin     "&#8712;"> <!-- element of, U+2208 ISOtech -->
-<!ENTITY notin    "&#8713;"> <!-- not an element of, U+2209 ISOtech -->
-<!ENTITY ni       "&#8715;"> <!-- contains as member, U+220B ISOtech -->
-<!ENTITY prod     "&#8719;"> <!-- n-ary product = product sign,
-                                     U+220F ISOamsb -->
-<!-- prod is NOT the same character as U+03A0 'greek capital letter pi' though
-     the same glyph might be used for both -->
-<!ENTITY sum      "&#8721;"> <!-- n-ary summation, U+2211 ISOamsb -->
-<!-- sum is NOT the same character as U+03A3 'greek capital letter sigma'
-     though the same glyph might be used for both -->
-<!ENTITY minus    "&#8722;"> <!-- minus sign, U+2212 ISOtech -->
-<!ENTITY lowast   "&#8727;"> <!-- asterisk operator, U+2217 ISOtech -->
-<!ENTITY radic    "&#8730;"> <!-- square root = radical sign,
-                                     U+221A ISOtech -->
-<!ENTITY prop     "&#8733;"> <!-- proportional to, U+221D ISOtech -->
-<!ENTITY infin    "&#8734;"> <!-- infinity, U+221E ISOtech -->
-<!ENTITY ang      "&#8736;"> <!-- angle, U+2220 ISOamso -->
-<!ENTITY and      "&#8743;"> <!-- logical and = wedge, U+2227 ISOtech -->
-<!ENTITY or       "&#8744;"> <!-- logical or = vee, U+2228 ISOtech -->
-<!ENTITY cap      "&#8745;"> <!-- intersection = cap, U+2229 ISOtech -->
-<!ENTITY cup      "&#8746;"> <!-- union = cup, U+222A ISOtech -->
-<!ENTITY int      "&#8747;"> <!-- integral, U+222B ISOtech -->
-<!ENTITY there4   "&#8756;"> <!-- therefore, U+2234 ISOtech -->
-<!ENTITY sim      "&#8764;"> <!-- tilde operator = varies with = similar to,
-                                     U+223C ISOtech -->
-<!-- tilde operator is NOT the same character as the tilde, U+007E,
-     although the same glyph might be used to represent both  -->
-<!ENTITY cong     "&#8773;"> <!-- approximately equal to, U+2245 ISOtech -->
-<!ENTITY asymp    "&#8776;"> <!-- almost equal to = asymptotic to,
-                                     U+2248 ISOamsr -->
-<!ENTITY ne       "&#8800;"> <!-- not equal to, U+2260 ISOtech -->
-<!ENTITY equiv    "&#8801;"> <!-- identical to, U+2261 ISOtech -->
-<!ENTITY le       "&#8804;"> <!-- less-than or equal to, U+2264 ISOtech -->
-<!ENTITY ge       "&#8805;"> <!-- greater-than or equal to,
-                                     U+2265 ISOtech -->
-<!ENTITY sub      "&#8834;"> <!-- subset of, U+2282 ISOtech -->
-<!ENTITY sup      "&#8835;"> <!-- superset of, U+2283 ISOtech -->
-<!ENTITY nsub     "&#8836;"> <!-- not a subset of, U+2284 ISOamsn -->
-<!ENTITY sube     "&#8838;"> <!-- subset of or equal to, U+2286 ISOtech -->
-<!ENTITY supe     "&#8839;"> <!-- superset of or equal to,
-                                     U+2287 ISOtech -->
-<!ENTITY oplus    "&#8853;"> <!-- circled plus = direct sum,
-                                     U+2295 ISOamsb -->
-<!ENTITY otimes   "&#8855;"> <!-- circled times = vector product,
-                                     U+2297 ISOamsb -->
-<!ENTITY perp     "&#8869;"> <!-- up tack = orthogonal to = perpendicular,
-                                     U+22A5 ISOtech -->
-<!ENTITY sdot     "&#8901;"> <!-- dot operator, U+22C5 ISOamsb -->
-<!-- dot operator is NOT the same character as U+00B7 middle dot -->
-
-<!-- Miscellaneous Technical -->
-<!ENTITY lceil    "&#8968;"> <!-- left ceiling = APL upstile,
-                                     U+2308 ISOamsc  -->
-<!ENTITY rceil    "&#8969;"> <!-- right ceiling, U+2309 ISOamsc  -->
-<!ENTITY lfloor   "&#8970;"> <!-- left floor = APL downstile,
-                                     U+230A ISOamsc  -->
-<!ENTITY rfloor   "&#8971;"> <!-- right floor, U+230B ISOamsc  -->
-<!ENTITY lang     "&#9001;"> <!-- left-pointing angle bracket = bra,
-                                     U+2329 ISOtech -->
-<!-- lang is NOT the same character as U+003C 'less than sign' 
-     or U+2039 'single left-pointing angle quotation mark' -->
-<!ENTITY rang     "&#9002;"> <!-- right-pointing angle bracket = ket,
-                                     U+232A ISOtech -->
-<!-- rang is NOT the same character as U+003E 'greater than sign' 
-     or U+203A 'single right-pointing angle quotation mark' -->
-
-<!-- Geometric Shapes -->
-<!ENTITY loz      "&#9674;"> <!-- lozenge, U+25CA ISOpub -->
-
-<!-- Miscellaneous Symbols -->
-<!ENTITY spades   "&#9824;"> <!-- black spade suit, U+2660 ISOpub -->
-<!-- black here seems to mean filled as opposed to hollow -->
-<!ENTITY clubs    "&#9827;"> <!-- black club suit = shamrock,
-                                     U+2663 ISOpub -->
-<!ENTITY hearts   "&#9829;"> <!-- black heart suit = valentine,
-                                     U+2665 ISOpub -->
-<!ENTITY diams    "&#9830;"> <!-- black diamond suit, U+2666 ISOpub -->

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/src/site/resources/dtd/xhtml1-strict.dtd
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/src/site/resources/dtd/xhtml1-strict.dtd b/component/viewer/bdd/src/site/resources/dtd/xhtml1-strict.dtd
deleted file mode 100644
index d26726e..0000000
--- a/component/viewer/bdd/src/site/resources/dtd/xhtml1-strict.dtd
+++ /dev/null
@@ -1,988 +0,0 @@
-<!--
-   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.24 $
-   $Date: 2002/07/31 19:34:51 $
-
--->
-
-<!--================ 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
-  concordion:assertEquals  CDATA         #IMPLIED
-  concordion:set           CDATA         #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;
-  concordion:execute  CDATA         #IMPLIED
-  >
-
-<!--=================== 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
-  concordion:run  CDATA         #IMPLIED
-  >
-
-<!--===================== Inline Elements ================================-->
-
-<!ELEMENT span %Inline;> <!-- generic language/style container -->
-<!ATTLIST span
-  %attrs;
-  concordion:assertTrue  CDATA         #IMPLIED
-  concordion:assertFalse  CDATA         #IMPLIED
-  >
-
-<!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
-  isis:execute          CDATA    #IMPLIED
-  concordion:verifyRows CDATA    #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;
-  >
-

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/src/site/resources/xmlmind/xhtml.css
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/src/site/resources/xmlmind/xhtml.css b/component/viewer/bdd/src/site/resources/xmlmind/xhtml.css
deleted file mode 100644
index 519df97..0000000
--- a/component/viewer/bdd/src/site/resources/xmlmind/xhtml.css
+++ /dev/null
@@ -1,692 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-/*
- * Copyright (c) 2003-2010 Pixware. 
- *
- * This file is part of the XMLmind XML Editor project.
- * For conditions of distribution and use, see the accompanying legal.txt file.
- */
-
-@namespace "http://www.w3.org/1999/xhtml";
-@namespace html "http://www.w3.org/1999/xhtml";
-@namespace concordion "http://www.concordion.org/2007/concordion";
-@namespace isis "http://isis.apache.org/2010/concordion";
-
-@import "xhtml_table.imp";
-@import "xhtml_form.imp";
-
-/* ---------------------------------------------------------------------------
-   Concordion/Isis customization
---------------------------------------------------------------------------- */
-
-*[concordion|set] {
-    background-color: #99CCCC;
-}
-*[concordion|execute] {
-    background-color: #CCFFCC;
-}
-*[isis|execute] {
-    background-color: #CCFFCC;
-}
-*[concordion|assertEquals] {
-    background-color: #66FF66;
-}
-*[concordion|assertTrue] {
-    background-color: #66FF66;
-}
-*[concordion|assertFalse] {
-    background-color: #66FF66;
-}
-*[concordion|verifyRows] {
-    background-color: #99FF99;
-}
-*[concordion|run] {
-    background-color: #FFFF66;
-}
-
-
-html {
-    display: block;
-}
-
-/* ---------------------------------------------------------------------------
-   Head
---------------------------------------------------------------------------- */
-
-head {
-    display: block;
-    margin: 1.33ex 0;
-    border: 1px solid #CCFAFF;
-    background-color: #EEFAFF;
-    padding: 0.5em;
-    border-radius: 0.5em;
-}
-
-title { 
-    display: block;
-    text-align: center;
-    font-weight: bold;
-    font-size: 2em;
-    color: #206080;
-    margin-top: .67ex;
-    margin-bottom: .67ex;
-}
-
-base,
-meta,
-link,
-style,
-script,
-noscript {
-    display: tree;
-}
-
-/* ---------------------------------------------------------------------------
-   Body
---------------------------------------------------------------------------- */
-
-body {
-    display: block;
-}
-
-/*
- * Partial support for the Transitional DTD.
- */
-body[bgcolor] {
-    background-color: concatenate(attr(bgcolor));
-}
-body[text] {
-    color: concatenate(attr(text));
-}
-
-/* ---------------------------------------------------------------------------
-   Blocks
---------------------------------------------------------------------------- */
-
-div {
-    display: block;
-}
-
-/*
- * Partial support for the Transitional DTD.
- */
-center {
-    display: block;
-}
-div[align=center],
-center { 
-    margin-left: auto;
-    margin-right: auto;
-    text-align: center; 
-}
-div[align=right] { 
-    margin-left: auto;
-    margin-right: 0;
-    text-align: right; 
-}
-
-hr {
-    display: block;
-    content: icon(invisible) icon(invisible);
-    border: 2 inset gray;
-}
-
-/*
- * Partial support for the Transitional DTD.
- */
-hr[noshade] {
-    background-color: gray;
-    border-style: solid;
-}
-
-/* -------------------------------------
-   Headings
-------------------------------------- */
-
-h1, 
-h2, 
-h3, 
-h4, 
-h5,
-h6 {
-    display: block;
-    font-weight: bold;
-    color: #206080;
-}
-
-h1 { 
-    font-size: 1.5em;
-    margin-top: .83ex;
-    margin-bottom: .83ex;
-}
-
-h2 { 
-    font-size: 1.3em;
-    margin-top: 1ex;
-    margin-bottom: 1ex;
-}
-
-h3, 
-h4, 
-h5, 
-h6 { 
-    margin-top: 1.33ex;
-    margin-bottom: 1.33ex;
-}
-
-/*
- * Partial support for the Transitional DTD.
- */
-h1[align], 
-h2[align], 
-h3[align], 
-h4[align], 
-h5[align],
-h6[align] {
-    text-align: concatenate(attr(align)); 
-}
-
-/* -------------------------------------
-   Paragraphs
-------------------------------------- */
-
-address {
-    display: block;
-    font-style: italic; 
-    margin-top: 1.33ex 0;
-}
-
-p { 
-    display: block;
-    margin: 1.33ex 0;
-}
-
-/*
- * Partial support for the Transitional DTD.
- */
-p[align] {
-    text-align: concatenate(attr(align)); 
-}
-
-pre { 
-    display: block;
-    white-space: pre;
-    font-family: monospace;
-    background-color: #EEEEEE;
-    border: thin solid gray;
-    padding: 2px;
-    margin: 1.33ex 0;
-}
-
-blockquote {
-    display: block;
-    margin: 1.33ex 10ex;
-}
-
-/* -------------------------------------
-   Lists
-------------------------------------- */
-
-ul { 
-    display: block;
-    margin-left: 2ex;
-    margin-top: 1.33ex;
-    margin-bottom: 1.33ex;
-}
-
-li {
-    display: block;
-    margin-top: 1.33ex;
-    margin-bottom: 1.33ex;
-}
-
-/*
- * Partial support for the Transitional DTD.
- */
-ul[compact] > li,
-ol[compact] > li {
-    margin-top: 0;
-    margin-bottom: 0;
-}
-
-ul > li {
-    margin-left: 2.5ex;
-}
-ul > li:before {
-    display: marker;
-    content: disc;
-}
-ul > li ul > li:before {
-    content: square;
-}
-ul > li ul > li ul > li:before {
-    content: icon(diamond);
-}
-ul > li ul > li ul > li ul > li:before {
-    content: circle;
-}
-
-/*
- * Partial support for the Transitional DTD.
- */
-dir,
-menu { 
-    display: block;
-    margin-left: 2ex;
-    margin-top: 1.33ex;
-    margin-bottom: 1.33ex;
-}
-dir > li,
-menu > li {
-    margin-left: 2.5ex;
-}
-dir > li:before {
-    display: marker;
-    content: icon(right-half-disc);
-    color: #206080;
-}
-menu > li:before {
-    display: marker;
-    content: icon(right);
-    color: #206080;
-}
-
-ol { 
-    display: block;
-    margin-left: 2ex;
-    margin-top: 1.33ex;
-    margin-bottom: 1.33ex;
-}
-
-ol > li {
-    margin-left: 6ex;
-}
-ol > li:before {
-    display: marker;
-    content: simple-counter(n, decimal) ".";
-    font-weight: bold;
-}
-
-/* Example of value for style attribute: "list-style-type: lower-roman;" */
-ol[style*=lower-alpha] > li:before {
-    content: simple-counter(n, lower-alpha) ".";
-}
-ol[style*=upper-alpha] > li:before {
-    content: simple-counter(n, upper-alpha) ".";
-}
-ol[style*=lower-roman] > li:before {
-    content: simple-counter(n, lower-roman) ".";
-}
-ol[style*=upper-roman] > li:before {
-    content: simple-counter(n, upper-roman) ".";
-}
-
-/*
- * Partial support for the Transitional DTD.
- */
-ol[type=a] > li:before {
-    content: simple-counter(n, lower-alpha) ".";
-}
-ol[type=A] > li:before {
-    content: simple-counter(n, upper-alpha) ".";
-}
-ol[type=i] > li:before {
-    content: simple-counter(n, lower-roman) ".";
-}
-ol[type=I] > li:before {
-    content: simple-counter(n, upper-roman) ".";
-}
-
-ol ul, ul ol, ul ul, ol ol { 
-    margin-top: 0; 
-    margin-bottom: 0; 
-}
-
-dl {
-    display: block;
-    margin-left: 2ex;
-    margin-top: 1.33ex;
-    margin-bottom: 1.33ex;
-}
-
-dt {
-    display: block;
-    font-weight: bold; 
-}
-
-dd { 
-    display: block;
-    margin-left: 4ex;
-    margin-bottom: 1.33ex;
-}
-
-/*
- * Partial support for the Transitional DTD.
- */
-dl[compact] > dd {
-    margin-bottom: 0;
-}
-
-/* ---------------------------------------------------------------------------
-   Inlines
-
-   span
-   em strong cite dfn code samp kbd var abbr acronym
-   q
-   sub sup
-   br
-   tt i b 
-   big small
-   basefont font
-   strike s u
-   a
---------------------------------------------------------------------------- */
-
-b, 
-strong { 
-    font-weight: bold; 
-}
-
-i, 
-em, 
-cite,
-var { 
-    font-style: italic; 
-}
-
-q:before {
-    content: open-quote;
-    font-weight: bold;
-    color: gray;
-}
-q:after {
-    content: close-quote;
-    font-weight: bold;
-    color: gray;
-}
-
-tt, 
-kbd, 
-code, 
-samp,
-var { 
-    font-family: monospace;
-}
-
-abbr, 
-acronym { 
-    font-weight: bold;
-}
-
-dfn {
-    background-color: #FFFFE0;
-}
-
-/*
- * Clearly show that a span which has a class attribute is something special.
- */
-span[class]:before {
-    content: icon(left-half-disc);
-    color: #C0C040;
-}
-span[class]:after {
-    content: icon(right-half-disc);
-    color: #C0C040;
-}
-
-sub, 
-sup {
-    display: inline-block;
-    white-space: nowrap;
-    font-size: small;
-}
-sub { 
-    vertical-align: sub;
-}
-sup { 
-    vertical-align: super;
-}
-
-/*
- * Partial support for the Transitional DTD.
- */
-strike,
-s {
-    text-decoration: line-through;
-}
-u { 
-    text-decoration: underline;
-}
-
-br:before { 
-    content: "\A"; 
-    color: gray;
-}
-
-big { 
-    font-size: large;
-}
-small { 
-    font-size: small;
-}
-
-/*
- * Partial support for the Transitional DTD.
- */
-basefont { 
-    content: "basefont=" attr(size);
-    font-size: small;
-    color: gray;
-}
-font[color] {
-    color: concatenate(attr(color));
-}
-font[face] {
-    font-family: concatenate(attr(face));
-}
-font[size="1"] {
-    font-size: x-small;
-}
-font[size="2"] {
-    font-size: small;
-}
-font[size="3"] {
-    font-size: medium;
-}
-font[size="4"] {
-    font-size: large;
-}
-font[size="5"] {
-    font-size: x-large;
-}
-font[size="6"],
-font[size="7"] {
-    font-size: xx-large;
-}
-font[size="-3"] {
-    font-size: smaller;
-}
-font[size="-2"] {
-    font-size: smaller;
-}
-font[size="-1"] {
-    font-size: smaller;
-}
-font[size="+1"] {
-    font-size: larger;
-}
-font[size="+2"] {
-    font-size: larger;
-}
-font[size="+3"] {
-    font-size: larger;
-}
-
-a[href] { 
-    color: navy;
-    text-decoration: underline;
-}
-a[name]:after,
-a[id]:after { 
-    content: icon(right-target); 
-    color: gray;
-    vertical-align: text-top;
-}
-
-a[href][class="drop_site"]:after {
-    content: " " drop-site(icon, icon(drop),
-                           command, "setImage", 
-                           parameter, "href anyURI - '%{value}'");
-    vertical-align: text-top;
-}
-
-/* ---------------------------------------------------------------------------
-   Ins/del
-  
-   When this is really needed, put the ins/del into a span 
-   to force inline display.
---------------------------------------------------------------------------- */
-
-ins {
-    display: block;
-    border-width: 2px;
-    border-style: solid;
-    border-color: transparent blue transparent transparent;
-    padding-right: 5px;
-}
-
-p ins,
-pre ins,
-h1 ins, h2 ins, h3 ins, h4 ins, h5 ins, h6 ins,
-dt ins, 
-address ins,
-a ins,
-span ins,
-bdo ins,
-em ins, strong ins,
-dfn ins,
-code ins,
-samp ins,
-kbd ins,
-var ins,
-cite ins,
-abbr ins, acronym ins,
-q ins,
-sub ins, sup ins,
-tt ins, i ins, b ins,
-big ins, small ins {
-    display: inline;
-    text-decoration: underline;
-}
-
-del {
-    display: block;
-    color: gray;
-    border-width: 2px;
-    border-style: solid;
-    border-color: transparent gray transparent transparent;
-    padding-right: 5px;
-}
-
-p del,
-pre del,
-h1 del, h2 del, h3 del, h4 del, h5 del, h6 del,
-dt del, 
-address del,
-a del,
-span del,
-bdo del,
-em del, strong del,
-dfn del,
-code del,
-samp del,
-kbd del,
-var del,
-cite del,
-abbr del, acronym del,
-q del,
-sub del, sup del,
-tt del, i del, b del,
-big del, small del {
-    display: inline;
-    text-decoration: line-through;
-}
-
-/* ---------------------------------------------------------------------------
-   Objects
---------------------------------------------------------------------------- */
-
-img {
-    display: inline;
-    content: image-viewport(attribute, src,
-			    data-type, anyURI,
-	                    content-width, attr(width),
-                            content-height, attr(height));
-}
-
-/*
- * Partial support for the Transitional DTD.
- */
-img[align=bottom],
-img[align=middle],
-img[align=top] {
-    vertical-align: concatenate(attr(align));
-}
-
-object,
-applet,
-param {
-    display: tree;
-}
-
-map,
-area {
-    display: tree;
-}
-
-/* ---------------------------------------------------------------------------
-   When printing
---------------------------------------------------------------------------- */
-
-@media print {
-    * {
-	background-color: transparent;
-        line-height: 1.2;
-    }
-
-    base,
-    meta,
-    link,
-    style,
-    script,
-    noscript {
-	display: none;
-    }
-
-    meta[name=author][content],
-    meta[name=date][content] { 
-        display: block;
-	text-align: center;
-	/* 
-	 * Without paragraph(), a static text label is used 
-         * and words are not wrapped.
-	 */	
-        content: paragraph(attr(content));
-    }
-}


[11/19] ISIS-463: mothballing BDD viewer

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/tck/src/test/resources/dtd/xhtml1-strict.dtd
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/tck/src/test/resources/dtd/xhtml1-strict.dtd b/component/viewer/bdd/tck/src/test/resources/dtd/xhtml1-strict.dtd
deleted file mode 100644
index abced1d..0000000
--- a/component/viewer/bdd/tck/src/test/resources/dtd/xhtml1-strict.dtd
+++ /dev/null
@@ -1,980 +0,0 @@
-<!--
-   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;
-  >
-

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/tck/src/test/resources/viewer/bdd/common/BootstrapInExplorationMode.html
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/tck/src/test/resources/viewer/bdd/common/BootstrapInExplorationMode.html b/component/viewer/bdd/tck/src/test/resources/viewer/bdd/common/BootstrapInExplorationMode.html
deleted file mode 100644
index 0bf58a3..0000000
--- a/component/viewer/bdd/tck/src/test/resources/viewer/bdd/common/BootstrapInExplorationMode.html
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-         http://www.apache.org/licenses/LICENSE-2.0
-         
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-<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" />
-<body>
-
-<p>
-The system:
-</p>
-<ul>
-<li>
-<p concordion:execute="#result=bootstrapIsis(#configDir,#deploymentType)">
-<span concordion:assertTrue="#result">bootstrapped</span> from
-config directory <span concordion:set="#configDir">../quickrun/src/main/resources</span>
-and running in <span concordion:set="#deploymentType">exploration</span>
-mode,
-</p>
-</li>
-<li>
-<p>with services: </p>
-<table concordion:execute="#result=aliasService(#aliasAs, #className)">
-	<tr>
-		<th concordion:set="#className">Class Name</th>
-		<th concordion:set="#aliasAs">aliasAs</th>
-		<th concordion:assertTrue="#result"/>
-	</tr>
-	<tr>
-		<td>objstore.dflt.todo.ToDoItemRepositoryDefault</td>
-		<td>toDoItems</td>
-		<td>ok</td>
-	</tr>
-</table>
-</li>
-</ul>
-
-</body>
-
-</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/tck/src/test/resources/viewer/bdd/common/ToDoItems.html
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/tck/src/test/resources/viewer/bdd/common/ToDoItems.html b/component/viewer/bdd/tck/src/test/resources/viewer/bdd/common/ToDoItems.html
deleted file mode 100644
index 33bc742..0000000
--- a/component/viewer/bdd/tck/src/test/resources/viewer/bdd/common/ToDoItems.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-         http://www.apache.org/licenses/LICENSE-2.0
-         
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-<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" />
-<body>
-
-<h3>Operational Data</h3>
-<p>With to do items (<span concordion:set="#className">dom.todo.ToDoItem</span>):
-</p>
-<table isis:execute="#result=setUpObject(#className, #alias, #description, #done)">
-	<tr>
-        <th concordion:set="#alias">Alias</th>
-		<th concordion:set="#description">Description</th>
-		<th concordion:set="#done">Done</th>
-		<th concordion:assertEquals="#result"/>
-	</tr>
-	<tr>
-        <td>item1</td>
-		<td>Buy milk</td>
-		<td>false</td>
-		<td>ok</td>
-	</tr>
-	<tr>
-        <td>item2</td>
-        <td>Pick up laundry</td>
-        <td>false</td>
-        <td>ok</td>
-	</tr>
-	<tr>
-        <td>item3</td>
-        <td>Buy stamps</td>
-        <td>false</td>
-        <td>ok</td>
-	</tr>
-    <tr>
-        <td>item4</td>
-        <td>Write blog post</td>
-        <td>false</td>
-        <td>ok</td>
-    </tr>
-    <tr>
-        <td>item5</td>
-        <td>Organize brown bag</td>
-        <td>false</td>
-        <td>ok</td>
-    </tr>
-</table>
-
-</body>
-</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/tck/src/test/resources/viewer/bdd/concordion.css
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/tck/src/test/resources/viewer/bdd/concordion.css b/component/viewer/bdd/tck/src/test/resources/viewer/bdd/concordion.css
deleted file mode 100644
index f849431..0000000
--- a/component/viewer/bdd/tck/src/test/resources/viewer/bdd/concordion.css
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-* {
-  font-family: Arial;
-}
-body {
-  padding: 32px;  
-}
-pre {
-  padding: 6px 28px 6px 28px;
-  background-color: #E8EEF7;
-}
-pre, pre *, code, code *, kbd {
-  font-family: Courier New, Courier;
-  font-size: 10pt;
-}
-h1, h1 * {
-  font-size: 24pt;
-}
-p, td, th, li, .breadcrumbs {
-  font-size: 10pt;
-}
-p, li {
-  line-height: 140%;
-}
-table {
-  border-collapse: collapse;
-  empty-cells: show;
-  margin: 8px 0px 8px 0px;
-}
-th, td {
-  border: 1px solid black;
-  padding: 3px;
-}
-td {
-  background-color: white;
-  vertical-align: top;
-}
-th {
-  background-color: #C3D9FF;
-}
-li {
-  margin-top: 6px;
-  margin-bottom: 6px; 
-}
-
-
-.example {
-  padding: 2px 12px 6px 12px;
-  border: 1px solid #C3D9FF;
-  margin: 6px 0px 28px 0px;
-  background-color: #F5F9FD;
-}
-.example h3 {
-  margin-top: 8px;
-  margin-bottom: 8px;
-  font-size: 12pt;
-}
-
-.special {
-  font-style: italic;
-}
-
-.idea {
-  font-size: 9pt;
-  color: #888;
-  font-style: italic;	
-}
-.tight li {
-  margin-top: 1px;
-  margin-bottom: 1px; 
-}
-.commentary {
-  float: right;
-  width: 200px;
-  background-color: #ffffd0;
-  padding:8px;
-  border: 3px solid #eeeeb0;	 
-  margin: 10px 0px 10px 10px;	 
-}
-.commentary, .commentary * {
-  font-size: 8pt;
-}
-span {
-  font-style: italic;
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/tck/src/test/resources/viewer/bdd/stories/AllStories.html
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/tck/src/test/resources/viewer/bdd/stories/AllStories.html b/component/viewer/bdd/tck/src/test/resources/viewer/bdd/stories/AllStories.html
deleted file mode 100644
index 39b3793..0000000
--- a/component/viewer/bdd/tck/src/test/resources/viewer/bdd/stories/AllStories.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-         http://www.apache.org/licenses/LICENSE-2.0
-         
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-<!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="todo/Index.html">ToDo Item Stories</a></p>
-	</li>
-</ul>
-
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/tck/src/test/resources/viewer/bdd/stories/todo/Fixtures.html
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/tck/src/test/resources/viewer/bdd/stories/todo/Fixtures.html b/component/viewer/bdd/tck/src/test/resources/viewer/bdd/stories/todo/Fixtures.html
deleted file mode 100644
index b2044e8..0000000
--- a/component/viewer/bdd/tck/src/test/resources/viewer/bdd/stories/todo/Fixtures.html
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-         http://www.apache.org/licenses/LICENSE-2.0
-         
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-<!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-MM-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-03-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/ToDoItems.html">To Do Items</a>.</p>
-	</li>
-</ul>
-
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/tck/src/test/resources/viewer/bdd/stories/todo/Index.html
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/tck/src/test/resources/viewer/bdd/stories/todo/Index.html b/component/viewer/bdd/tck/src/test/resources/viewer/bdd/stories/todo/Index.html
deleted file mode 100644
index 0a43ec4..0000000
--- a/component/viewer/bdd/tck/src/test/resources/viewer/bdd/stories/todo/Index.html
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-         http://www.apache.org/licenses/LICENSE-2.0
-         
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-<!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>ToDo Item Stories</h1>
-
-<ul>
-    <li>
-	<p><a concordion:run="concordion"
-		href="ScenarioMarkItemAsDone.html">mark item as done</a></p>
-	</li>
-</ul>
-
-
-
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/tck/src/test/resources/viewer/bdd/stories/todo/ScenarioMarkItemAsDone.html
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/tck/src/test/resources/viewer/bdd/stories/todo/ScenarioMarkItemAsDone.html b/component/viewer/bdd/tck/src/test/resources/viewer/bdd/stories/todo/ScenarioMarkItemAsDone.html
deleted file mode 100644
index beff4b2..0000000
--- a/component/viewer/bdd/tck/src/test/resources/viewer/bdd/stories/todo/ScenarioMarkItemAsDone.html
+++ /dev/null
@@ -1,163 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-         http://www.apache.org/licenses/LICENSE-2.0
-         
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-<!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>Mark Item As Done</h1>
-
-<div class="example">
-
-<h2>Given</h2>
-<p>
-Given <a concordion:run="concordion"
-        href="Fixtures.html">this fixture</a></p>
-
-<p>Locate to-do item:</p>
-<table
-    isis:execute="#result=usingIsisViewerThatArgs(#onObject, #aliasResultAs, #perform, #onMember, #thatIt, #value)">
-    <tr>
-        <th concordion:set="#onObject">on object</th>
-        <th concordion:set="#aliasResultAs">alias result as</th>
-        <th concordion:set="#perform">perform</th>
-        <th concordion:set="#onMember">on member</th>
-        <th concordion:assertEquals="#result" />
-    </tr>
-    <tr>
-        <td>toDoItems</td>
-        <td>listOfItemsBefore</td>
-        <td>invoke action</td>
-        <td>not yet done</td>
-        <td>ok</td>
-    </tr>
-</table>
-
-<p
-    concordion:execute="#result=aliasItemsInList(#listAlias, #title, #aliasAs)">
-... and then alias the '<span concordion:set="#title">Buy milk</span>' item in the returned <span
-    concordion:set="#listAlias">listOfItemsBefore</span> as <span
-    concordion:set="#aliasAs">buyMilkItem</span>; <span
-    concordion:assertEquals="#result">ok</span>.</p>
-
-<p>Confirm to-do item is not done:</p>
-<table
-    isis:execute="#result=usingIsisViewerThatArgs(#onObject, #aliasResultAs, #perform, #onMember, #thatIt, #value)">
-    <tr>
-        <th concordion:set="#onObject">on object</th>
-        <th concordion:set="#aliasResultAs">alias result as</th>
-        <th concordion:set="#perform">perform</th>
-        <th concordion:set="#onMember">on member</th>
-        <th concordion:set="#thatIt">that it</th>
-        <th concordion:set="#value">value</th>
-        <th concordion:assertEquals="#result" />
-    </tr>
-    <tr>
-        <td>buyMilkItem</td>
-        <td></td>
-        <td>check property</td>
-        <td>Done</td>
-        <td>is</td>
-        <td>False</td>
-        <td>ok</td>
-    </tr>
-</table>
-
-
-
-<h2>When</h2>
-
-<p>Mark as done</p>
-<table
-	isis:execute="#result=usingIsisViewerThatArgs(#onObject, #aliasResultAs, #perform, #onMember, #thatIt, #value)">
-	<tr>
-		<th concordion:set="#onObject">on object</th>
-		<th concordion:set="#aliasResultAs">alias result as</th>
-		<th concordion:set="#perform">perform</th>
-		<th concordion:set="#onMember">on member</th>
-		<th concordion:assertEquals="#result" />
-	</tr>
-    <tr>
-        <td>buyMilkItem</td>
-        <td></td>
-        <td>invoke action</td>
-        <td>mark as done</td>
-        <td>ok</td>
-    </tr>
-</table>
-
-<h2>Then</h2>
-<p>Confirm item is done...</p>
-<table
-    isis:execute="#result=usingIsisViewerThatArgs(#onObject, #aliasResultAs, #perform, #onMember, #thatIt, #value)">
-    <tr>
-        <th concordion:set="#onObject">on object</th>
-        <th concordion:set="#aliasResultAs">alias result as</th>
-        <th concordion:set="#perform">perform</th>
-        <th concordion:set="#onMember">on member</th>
-        <th concordion:set="#thatIt">that it</th>
-        <th concordion:set="#value">value</th>
-        <th concordion:assertEquals="#result" />
-    </tr>
-    <tr>
-        <td>buyMilkItem</td>
-        <td></td>
-        <td>check property</td>
-        <td>Done</td>
-        <td>is</td>
-        <td>True</td>
-        <td>ok</td>
-    </tr>
-</table>
-
-<p>... and that when the list of items is obtained again...</p>
-<table
-    isis:execute="#result=usingIsisViewerThatArgs(#onObject, #aliasResultAs, #perform, #onMember, #thatIt, #value)">
-    <tr>
-        <th concordion:set="#onObject">on object</th>
-        <th concordion:set="#aliasResultAs">alias result as</th>
-        <th concordion:set="#perform">perform</th>
-        <th concordion:set="#onMember">on member</th>
-        <th concordion:assertEquals="#result" />
-    </tr>
-    <tr>
-        <td>toDoItems</td>
-        <td>listOfItemsAfter</td>
-        <td>invoke action</td>
-        <td>not yet done</td>
-        <td>ok</td>
-    </tr>
-</table>
-
-<p concordion:execute="#result=checkCollectionDoesNotContain(#listAlias,#alias)">
-... then the <span concordion:set="#alias">buyMilkItem</span> is no 
-longer in that list (<span concordion:set="#listAlias">listOfItemsAfter</span>);
-  <span concordion:assertEquals="#result">ok</span>.
-</p>
-
-<!-- uncomment the line below to run up the DnD viewer -->
-<!-- 
-<p concordion:execute="runViewer()">run viewer</p>
---></div>
-
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/example/application/quickstart_dnd_junit_bdd/dom/log4j.properties
----------------------------------------------------------------------
diff --git a/example/application/quickstart_dnd_junit_bdd/dom/log4j.properties b/example/application/quickstart_dnd_junit_bdd/dom/log4j.properties
deleted file mode 100644
index 281bfb6..0000000
--- a/example/application/quickstart_dnd_junit_bdd/dom/log4j.properties
+++ /dev/null
@@ -1,24 +0,0 @@
-# LOG4J Configuration
-# ===================
-
-# Basic logging goes to "datanucleus.log"
-log4j.appender.A1=org.apache.log4j.FileAppender
-log4j.appender.A1.File=datanucleus.log
-log4j.appender.A1.layout=org.apache.log4j.PatternLayout
-log4j.appender.A1.layout.ConversionPattern=%d{HH:mm:ss,SSS} (%t) %-5p [%c] - %m%n
-#log4j.appender.A1.Threshold=INFO
-
-# Categories
-# Each category can be set to a "level", and to direct to an appender
-
-# Default to DEBUG level for all DataNucleus categories
-log4j.logger.DataNucleus = DEBUG, A1
-
-log4j.category.com.mchange.v2.c3p0=INFO, A1
-log4j.category.com.mchange.v2.resourcepool=INFO, A1
-log4j.category.org.logicalcobwebs.proxool=INFO,A1
-
-
-# Hbase libs logging
-log4j.category.org.apache.hadoop=INFO,A1
-log4j.category.org.apache.zookeeper=INFO,A1
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/example/application/quickstart_dnd_junit_bdd/dom/pom.xml
----------------------------------------------------------------------
diff --git a/example/application/quickstart_dnd_junit_bdd/dom/pom.xml b/example/application/quickstart_dnd_junit_bdd/dom/pom.xml
deleted file mode 100644
index d34fea3..0000000
--- a/example/application/quickstart_dnd_junit_bdd/dom/pom.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-         http://www.apache.org/licenses/LICENSE-2.0
-         
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-
-	<parent>
-    	<groupId>org.apache.isis.example.application</groupId>
-    	<artifactId>quickstart_dnd_junit_bdd</artifactId>
-		<version>1.0.0-SNAPSHOT</version>
-	</parent>
-
-	<artifactId>quickstart_dnd_junit_bdd-dom</artifactId>
-	<name>Quickstart (DnD/Junit/BDD) DOM</name>
-
-	<dependencies>
-		<dependency>
-			<groupId>org.apache.isis.core</groupId>
-			<artifactId>isis-core-applib</artifactId>
-		</dependency>
-	</dependencies>
-    
-</project>

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/example/application/quickstart_dnd_junit_bdd/dom/src/main/java/dom/todo/ToDoItem.java
----------------------------------------------------------------------
diff --git a/example/application/quickstart_dnd_junit_bdd/dom/src/main/java/dom/todo/ToDoItem.java b/example/application/quickstart_dnd_junit_bdd/dom/src/main/java/dom/todo/ToDoItem.java
deleted file mode 100644
index 0acef77..0000000
--- a/example/application/quickstart_dnd_junit_bdd/dom/src/main/java/dom/todo/ToDoItem.java
+++ /dev/null
@@ -1,228 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package dom.todo;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.joda.time.LocalDate;
-
-import org.apache.isis.applib.DomainObjectContainer;
-import org.apache.isis.applib.annotation.AutoComplete;
-import org.apache.isis.applib.annotation.Disabled;
-import org.apache.isis.applib.annotation.Hidden;
-import org.apache.isis.applib.annotation.MemberGroups;
-import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.MultiLine;
-import org.apache.isis.applib.annotation.ObjectType;
-import org.apache.isis.applib.annotation.Optional;
-import org.apache.isis.applib.annotation.Resolve;
-import org.apache.isis.applib.annotation.Resolve.Type;
-import org.apache.isis.applib.annotation.Title;
-import org.apache.isis.applib.annotation.Where;
-
-@ObjectType("TODO")
-@AutoComplete(repository=ToDoItems.class, action="autoComplete")
-@MemberGroups({"General", "Detail"})
-public class ToDoItem {
-
-    public static enum Category {
-        Professional, Domestic, Other;
-    }
-
-    // {{ Description
-    private String description;
-
-    @Title
-    @MemberOrder(sequence = "1")
-    public String getDescription() {
-        return description;
-    }
-
-    public void setDescription(final String description) {
-        this.description = description;
-    }
-    // }}
-
-    // {{ Category
-    private Category category;
-
-    @MemberOrder(sequence = "2")
-    public Category getCategory() {
-        return category;
-    }
-
-    public void setCategory(final Category category) {
-        this.category = category;
-    }
-    // }}
-
-    // {{ DueBy (property)
-    private LocalDate dueBy;
-
-    @MemberOrder(name="Detail", sequence = "3")
-    @Optional
-    public LocalDate getDueBy() {
-        return dueBy;
-    }
-
-    public void setDueBy(final LocalDate dueBy) {
-        this.dueBy = dueBy;
-    }
-    // }}
-
-    // {{ Done
-    private boolean done;
-
-    @Disabled
-    @MemberOrder(sequence = "4")
-    public boolean getDone() {
-        return done;
-    }
-
-    public void setDone(final boolean done) {
-        this.done = done;
-    }
-    // }}
-
-    // {{ Notes (property)
-    private String notes;
-
-    @Hidden(where=Where.ALL_TABLES)
-    @Optional
-    @MultiLine(numberOfLines=5)
-    @MemberOrder(name="Detail", sequence = "6")
-    public String getNotes() {
-        return notes;
-    }
-
-    public void setNotes(final String notes) {
-        this.notes = notes;
-    }
-    // }}
-
-    // {{ OwnedBy (property, hidden)
-    private String ownedBy;
-
-    @Hidden
-    public String getOwnedBy() {
-        return ownedBy;
-    }
-
-    public void setOwnedBy(final String ownedBy) {
-        this.ownedBy = ownedBy;
-    }
-    // }}
-
-    // {{ markAsDone (action)
-    @MemberOrder(sequence = "1")
-    public ToDoItem markAsDone() {
-        setDone(true);
-        return this;
-    }
-
-    public String disableMarkAsDone() {
-        return done ? "Already done" : null;
-    }
-    // }}
-
-    // {{ markAsNotDone (action)
-    @MemberOrder(sequence = "2")
-    public ToDoItem markAsNotDone() {
-        setDone(false);
-        return this;
-    }
-
-    public String disableMarkAsNotDone() {
-        return !done ? "Not yet done" : null;
-    }
-    // }}
-
-    // {{ dependencies (Collection)
-    private List<ToDoItem> dependencies = new ArrayList<ToDoItem>();
-
-    @Disabled
-    @MemberOrder(sequence = "1")
-    @Resolve(Type.EAGERLY)
-    public List<ToDoItem> getDependencies() {
-        return dependencies;
-    }
-
-    public void setDependencies(final List<ToDoItem> dependencies) {
-        this.dependencies = dependencies;
-    }
-    // }}
-
-    // {{ add (action)
-    @MemberOrder(name="dependencies", sequence = "3")
-    public ToDoItem add(final ToDoItem toDoItem) {
-        getDependencies().add(toDoItem);
-        return this;
-    }
-    public String validateAdd(final ToDoItem toDoItem) {
-        if(getDependencies().contains(toDoItem)) {
-            return "Already a dependency";
-        }
-        if(toDoItem == this) {
-            return "Can't set up a dependency to self";
-        }
-        return null;
-    }
-    // }}
-
-    // {{ remove (action)
-    @MemberOrder(name="dependencies", sequence = "4")
-    public ToDoItem remove(final ToDoItem toDoItem) {
-        getDependencies().remove(toDoItem);
-        return this;
-    }
-    public String disableRemove(final ToDoItem toDoItem) {
-        return getDependencies().isEmpty()? "No dependencies to remove": null;
-    }
-    public String validateRemove(final ToDoItem toDoItem) {
-        if(!getDependencies().contains(toDoItem)) {
-            return "Not a dependency";
-        }
-        return null;
-    }
-    public List<ToDoItem> choices0Remove() {
-        return getDependencies();
-    }
-    // }}
-
-    // {{ injected: DomainObjectContainer
-    @SuppressWarnings("unused")
-    private DomainObjectContainer container;
-
-    public void setDomainObjectContainer(final DomainObjectContainer container) {
-        this.container = container;
-    }
-    // }}
-
-    // {{ injected: ToDoItems
-    @SuppressWarnings("unused")
-    private ToDoItems toDoItems;
-
-    public void setToDoItems(final ToDoItems toDoItems) {
-        this.toDoItems = toDoItems;
-    }
-    // }}
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/example/application/quickstart_dnd_junit_bdd/dom/src/main/java/dom/todo/ToDoItems.java
----------------------------------------------------------------------
diff --git a/example/application/quickstart_dnd_junit_bdd/dom/src/main/java/dom/todo/ToDoItems.java b/example/application/quickstart_dnd_junit_bdd/dom/src/main/java/dom/todo/ToDoItems.java
deleted file mode 100644
index 8e9a1e5..0000000
--- a/example/application/quickstart_dnd_junit_bdd/dom/src/main/java/dom/todo/ToDoItems.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package dom.todo;
-
-import java.util.List;
-
-import com.google.common.base.Objects;
-
-import dom.todo.ToDoItem.Category;
-
-import org.apache.isis.applib.AbstractFactoryAndRepository;
-import org.apache.isis.applib.annotation.ActionSemantics;
-import org.apache.isis.applib.annotation.ActionSemantics.Of;
-import org.apache.isis.applib.annotation.Hidden;
-import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.Named;
-import org.apache.isis.applib.annotation.NotInServiceMenu;
-import org.apache.isis.applib.annotation.Programmatic;
-import org.apache.isis.applib.filter.Filter;
-
-@Named("ToDos")
-public class ToDoItems extends AbstractFactoryAndRepository {
-
-    // {{ Id, iconName
-    @Override
-    public String getId() {
-        return "toDoItems";
-    }
-
-    public String iconName() {
-        return "ToDoItem";
-    }
-    // }}
-
-    // {{ notYetDone (action)
-    @ActionSemantics(Of.SAFE)
-    @MemberOrder(sequence = "1")
-    public List<ToDoItem> notYetDone() {
-        return allMatches(ToDoItem.class, new Filter<ToDoItem>() {
-            @Override
-            public boolean accept(final ToDoItem t) {
-                return ownedByCurrentUser(t) && !t.getDone();
-            }
-        });
-    }
-    // }}
-
-    // {{ done (action)
-    @ActionSemantics(Of.SAFE)
-    @MemberOrder(sequence = "2")
-    public List<ToDoItem> done() {
-        return allMatches(ToDoItem.class, new Filter<ToDoItem>() {
-            @Override
-            public boolean accept(final ToDoItem t) {
-                return ownedByCurrentUser(t) && t.getDone();
-            }
-        });
-    }
-    // }}
-
-    // {{ newToDo  (action)
-    @MemberOrder(sequence = "2")
-    public ToDoItem newToDo(
-            @Named("Description") String description, 
-            @Named("Category") Category category) {
-        final String ownedBy = getContainer().getUser().getName();
-        return newToDo(description, category, ownedBy);
-    }
-    // }}
-
-    // {{ newToDo  (hidden)
-    @Hidden // for use by fixtures
-    public ToDoItem newToDo(
-            String description, 
-            Category category, 
-            String ownedBy) {
-        final ToDoItem toDoItem = newTransientInstance(ToDoItem.class);
-        toDoItem.setDescription(description);
-        toDoItem.setCategory(category);
-        toDoItem.setOwnedBy(ownedBy);
-        persist(toDoItem);
-        return toDoItem;
-    }
-    // }}
-
-    // {{ similarTo (action)
-    @NotInServiceMenu
-    @ActionSemantics(Of.SAFE)
-    @MemberOrder(sequence = "3")
-    public List<ToDoItem> similarTo(final ToDoItem toDoItem) {
-        return allMatches(ToDoItem.class, new Filter<ToDoItem>() {
-            @Override
-            public boolean accept(ToDoItem t) {
-                return t != toDoItem && Objects.equal(toDoItem.getCategory(), t.getCategory()) && Objects.equal(toDoItem.getOwnedBy(), t.getOwnedBy());
-            }
-        });
-    }
-    // }}
-
-    // {{ autoComplete (hidden)
-    @Hidden
-    public List<ToDoItem> autoComplete(final String description) {
-        return allMatches(ToDoItem.class, new Filter<ToDoItem>() {
-            @Override
-            public boolean accept(final ToDoItem t) {
-                return ownedByCurrentUser(t) && t.getDescription().contains(description);
-            }
-
-        });
-    }
-    // }}
-
-    // {{ helpers
-    protected boolean ownedByCurrentUser(final ToDoItem t) {
-        return Objects.equal(t.getOwnedBy(), currentUserName());
-    }
-    protected String currentUserName() {
-        return getContainer().getUser().getName();
-    }
-    // }}
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/example/application/quickstart_dnd_junit_bdd/dom/src/main/resources/images/ToDoItem.gif
----------------------------------------------------------------------
diff --git a/example/application/quickstart_dnd_junit_bdd/dom/src/main/resources/images/ToDoItem.gif b/example/application/quickstart_dnd_junit_bdd/dom/src/main/resources/images/ToDoItem.gif
deleted file mode 100644
index cc536e1..0000000
Binary files a/example/application/quickstart_dnd_junit_bdd/dom/src/main/resources/images/ToDoItem.gif and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/example/application/quickstart_dnd_junit_bdd/fixture/pom.xml
----------------------------------------------------------------------
diff --git a/example/application/quickstart_dnd_junit_bdd/fixture/pom.xml b/example/application/quickstart_dnd_junit_bdd/fixture/pom.xml
deleted file mode 100644
index 8b4b53a..0000000
--- a/example/application/quickstart_dnd_junit_bdd/fixture/pom.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-         http://www.apache.org/licenses/LICENSE-2.0
-         
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-
-    <parent>
-    	<groupId>org.apache.isis.example.application</groupId>
-        <artifactId>quickstart_dnd_junit_bdd</artifactId>
-        <version>1.0.0-SNAPSHOT</version>
-    </parent>
-
-	<artifactId>quickstart_dnd_junit_bdd-fixture</artifactId>
-	<name>Quickstart (DnD/Junit/BDD) Fixtures</name>
-
-	<dependencies>
-		<dependency>
-			<groupId>${project.groupId}</groupId>
-			<artifactId>quickstart_dnd_junit_bdd-dom</artifactId>
-		</dependency>
-	</dependencies>
-
-</project>

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/example/application/quickstart_dnd_junit_bdd/fixture/src/main/java/fixture/LogonAsSvenFixture.java
----------------------------------------------------------------------
diff --git a/example/application/quickstart_dnd_junit_bdd/fixture/src/main/java/fixture/LogonAsSvenFixture.java b/example/application/quickstart_dnd_junit_bdd/fixture/src/main/java/fixture/LogonAsSvenFixture.java
deleted file mode 100644
index 5bdc6fe..0000000
--- a/example/application/quickstart_dnd_junit_bdd/fixture/src/main/java/fixture/LogonAsSvenFixture.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package fixture;
-
-import org.apache.isis.applib.fixtures.LogonFixture;
-
-public class LogonAsSvenFixture extends LogonFixture {
-
-    public LogonAsSvenFixture() {
-        super("sven");
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/example/application/quickstart_dnd_junit_bdd/fixture/src/main/java/fixture/todo/ToDoItemsFixture.java
----------------------------------------------------------------------
diff --git a/example/application/quickstart_dnd_junit_bdd/fixture/src/main/java/fixture/todo/ToDoItemsFixture.java b/example/application/quickstart_dnd_junit_bdd/fixture/src/main/java/fixture/todo/ToDoItemsFixture.java
deleted file mode 100644
index b0c7b61..0000000
--- a/example/application/quickstart_dnd_junit_bdd/fixture/src/main/java/fixture/todo/ToDoItemsFixture.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package fixture.todo;
-
-import dom.todo.ToDoItem;
-import dom.todo.ToDoItem.Category;
-import dom.todo.ToDoItems;
-
-import org.apache.isis.applib.fixtures.AbstractFixture;
-
-public class ToDoItemsFixture extends AbstractFixture {
-
-    @Override
-    public void install() {
-        createFiveFor("sven");
-        createThreeFor("dick");
-        createTwoFor("bob");
-        createOneFor("joe");
-
-        // for exploration user
-        createFiveFor("exploration");
-    }
-
-    private void createFiveFor(String ownedBy) {
-        createToDoItem("Buy milk", Category.Domestic, ownedBy);
-        createToDoItem("Pick up laundry", Category.Domestic, ownedBy);
-        createToDoItem("Buy stamps", Category.Domestic, ownedBy);
-        createToDoItem("Write blog post", Category.Professional, ownedBy);
-        createToDoItem("Organize brown bag", Category.Professional, ownedBy);
-    }
-
-    private void createThreeFor(String ownedBy) {
-        createToDoItem("Book car in for service", Category.Domestic, ownedBy);
-        createToDoItem("Buy birthday present for sven", Category.Domestic, ownedBy);
-        createToDoItem("Write presentation for conference", Category.Professional, ownedBy);
-    }
-
-    private void createTwoFor(String ownedBy) {
-        createToDoItem("Write thank you notes", Category.Domestic, ownedBy);
-        createToDoItem("Look into solar panels", Category.Domestic, ownedBy);
-    }
-
-    private void createOneFor(String ownedBy) {
-        createToDoItem("Pitch book idea to publisher", Category.Professional, ownedBy);
-    }
-
-    private ToDoItem createToDoItem(final String description, Category category, String ownedBy) {
-        return toDoItems.newToDo(description, category, ownedBy);
-    }
-
-    private ToDoItems toDoItems;
-
-    public void setToDoItems(final ToDoItems toDoItems) {
-        this.toDoItems = toDoItems;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/example/application/quickstart_dnd_junit_bdd/fixture/src/main/java/fixture/todo/ToDoItemsFixturesService.java
----------------------------------------------------------------------
diff --git a/example/application/quickstart_dnd_junit_bdd/fixture/src/main/java/fixture/todo/ToDoItemsFixturesService.java b/example/application/quickstart_dnd_junit_bdd/fixture/src/main/java/fixture/todo/ToDoItemsFixturesService.java
deleted file mode 100644
index ddb1203..0000000
--- a/example/application/quickstart_dnd_junit_bdd/fixture/src/main/java/fixture/todo/ToDoItemsFixturesService.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package fixture.todo;
-
-import dom.todo.ToDoItems;
-
-import org.apache.isis.applib.AbstractService;
-import org.apache.isis.applib.annotation.Named;
-
-/**
- * Enables fixtures to be installed from the application.
- */
-@Named("Fixtures")
-public class ToDoItemsFixturesService extends AbstractService {
-
-    public void install() {
-        final ToDoItemsFixture fixture = new ToDoItemsFixture();
-        fixture.setContainer(getContainer());
-        fixture.setToDoItems(toDoItems);
-        fixture.install();
-    }
-
-    private ToDoItems toDoItems;
-
-    public void setToDoItems(final ToDoItems toDoItems) {
-        this.toDoItems = toDoItems;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/example/application/quickstart_dnd_junit_bdd/pom.xml
----------------------------------------------------------------------
diff --git a/example/application/quickstart_dnd_junit_bdd/pom.xml b/example/application/quickstart_dnd_junit_bdd/pom.xml
deleted file mode 100644
index be7af8e..0000000
--- a/example/application/quickstart_dnd_junit_bdd/pom.xml
+++ /dev/null
@@ -1,266 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-         http://www.apache.org/licenses/LICENSE-2.0
-         
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <groupId>org.apache.isis.example.application</groupId>
-    <artifactId>quickstart_dnd_junit_bdd</artifactId>
-    <version>1.0.0-SNAPSHOT</version>
-
-    <name>Quickstart (DnD/Junit/BDD) App</name>
-
-    <packaging>pom</packaging>
-    
-    
-    <properties>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
-
-        <isis.version>1.3.0-SNAPSHOT</isis.version>
-        <isis-objectstore-xml.version>1.0.0-SNAPSHOT</isis-objectstore-xml.version>
-        <isis-profilestore-xml.version>1.0.0-SNAPSHOT</isis-profilestore-xml.version>
-        <isis-viewer-bdd.version>1.0.0-SNAPSHOT</isis-viewer-bdd.version>
-        <isis-viewer-dnd.version>1.0.0-SNAPSHOT</isis-viewer-dnd.version>
-        <isis-security-file.version>1.0.2-SNAPSHOT</isis-security-file.version>
-    </properties>
-    
-    <repositories>
-        <repository>
-              <id>apache.snapshots</id>
-              <name>Apache Snapshots</name>
-              <url>https://repository.apache.org/content/repositories/snapshots/</url>
-              <releases>
-                  <enabled>false</enabled>
-              </releases>
-              <snapshots>
-                  <enabled>true</enabled>
-              </snapshots>
-          </repository>
-    </repositories>
-
-    <build>
-        <pluginManagement>
-            <plugins>
-                <plugin>
-                    <groupId>org.apache.maven.plugins</groupId>
-                    <artifactId>maven-compiler-plugin</artifactId>
-                    <version>2.3.1</version>
-                    <configuration>
-                        <source>1.6</source>
-                        <target>1.6</target>
-                    </configuration>
-                    <executions>
-                        <execution>
-                            <id>source</id>
-                            <phase>compile</phase>
-                        </execution>
-                        <execution>
-                            <id>test</id>
-                            <phase>test-compile</phase>
-                        </execution>
-                    </executions>
-                </plugin>
-
-                <plugin>
-                    <groupId>org.apache.maven.plugins</groupId>
-                    <artifactId>maven-surefire-plugin</artifactId>
-                    <version>2.5</version>
-                    <configuration>
-                        <excludes>
-                            <exclude>**/Test*.java</exclude>
-                        </excludes>
-                        <useFile>true</useFile>
-                        <printSummary>false</printSummary>
-                        <outputDirectory>${project.build.directory}/surefire-reports</outputDirectory>
-                    </configuration>
-                </plugin>
-
-                <plugin>
-                    <groupId>org.apache.maven.plugins</groupId>
-                    <artifactId>maven-surefire-report-plugin</artifactId>
-                    <version>2.5</version>
-                    <configuration>
-                        <excludes>
-                            <exclude>**/Test*.java</exclude>
-                        </excludes>
-                        <showSuccess>false</showSuccess>
-                    </configuration>
-                    <executions>
-                        <execution>
-                            <phase>test</phase>
-                        </execution>
-                    </executions>
-                </plugin>
-
-                <plugin>
-                    <groupId>org.mortbay.jetty</groupId>
-                    <artifactId>maven-jetty-plugin</artifactId>
-                    <version>6.1.25</version>
-                </plugin>
-
-				<plugin>
-					<groupId>org.apache.maven.plugins</groupId>
-					<artifactId>maven-shade-plugin</artifactId>
-					<version>1.4</version>
-				</plugin>
-
-				<plugin>
-					<groupId>org.apache.maven.plugins</groupId>
-					<artifactId>maven-antrun-plugin</artifactId>
-					<version>1.6</version>
-					<executions>
-						<execution>
-					        <goals>
-					          <goal>run</goal>
-					        </goals>
-						</execution>
-					</executions>
-				</plugin>
-                <!-- http://simplericity.com/2009/11/10/1257880778509.html -->
-                <plugin>
-                    <groupId>org.simplericity.jettyconsole</groupId>
-                    <artifactId>jetty-console-maven-plugin</artifactId>
-                    <version>1.43</version>
-                </plugin>
-            </plugins>
-        </pluginManagement>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-report-plugin</artifactId>
-            </plugin>
-        </plugins>
-    </build>
-
-    <modules>
-        <module>dom</module>
-        <module>fixture</module>
-        <module>viewer-dnd</module>
-        <module>tests-bdd</module>
-    </modules>
-
-    <dependencyManagement>
-        <dependencies>
-
-            <dependency>
-                <groupId>org.apache.isis.core</groupId>
-                <artifactId>isis</artifactId>
-                <version>${isis.version}</version>
-                <type>pom</type>
-                <scope>import</scope>
-            </dependency>
-
-            <dependency>
-                <groupId>org.apache.isis.objectstore</groupId>
-                <artifactId>isis-objectstore-xml</artifactId>
-                <version>${isis-objectstore-xml.version}</version>
-                <type>pom</type>
-                <scope>import</scope>
-            </dependency>
-
-            <dependency>
-                <groupId>org.apache.isis.profilestore</groupId>
-                <artifactId>isis-profilestore-xml</artifactId>
-                <version>${isis-profilestore-xml.version}</version>
-                <type>pom</type>
-                <scope>import</scope>
-            </dependency>
-
-            <dependency>
-                <groupId>org.apache.isis.viewer</groupId>
-                <artifactId>isis-viewer-bdd</artifactId>
-                <version>${isis-viewer-bdd.version}</version>
-                <type>pom</type>
-                <scope>import</scope>
-            </dependency>
-
-            <dependency>
-                <groupId>org.apache.isis.viewer</groupId>
-                <artifactId>isis-viewer-dnd</artifactId>
-                <version>${isis-viewer-dnd.version}</version>
-                <type>pom</type>
-                <scope>import</scope>
-            </dependency>
-
-            <dependency>
-                <groupId>org.apache.isis.security</groupId>
-                <artifactId>isis-security-file</artifactId>
-                <version>${isis-security-file.version}</version>
-                <type>pom</type>
-                <scope>import</scope>
-            </dependency>
-
-
-            <!-- this project's own modules -->
-            <dependency>
-                <groupId>${project.groupId}</groupId>
-                <artifactId>quickstart_dnd_junit_bdd-dom</artifactId>
-                <version>${project.version}</version>
-            </dependency>
-
-            <dependency>
-                <groupId>${project.groupId}</groupId>
-                <artifactId>quickstart_dnd_junit_bdd-fixture</artifactId>
-                <version>${project.version}</version>
-            </dependency>
-
-            <dependency>
-                <groupId>${project.groupId}</groupId>
-                <artifactId>quickstart_dnd_junit_bdd-viewer-dnd</artifactId>
-                <version>${project.version}</version>
-            </dependency>
-
-            <dependency>
-                <groupId>${project.groupId}</groupId>
-                <artifactId>quickstart_dnd_junit_bdd-tests-bdd</artifactId>
-                <version>${project.version}</version>
-            </dependency>
-
-            <dependency>
-                <groupId>${project.groupId}</groupId>
-                <artifactId>quickstart_dnd_junit_bdd-tests-junit</artifactId>
-                <version>${project.version}</version>
-            </dependency>
-
-
-
-        </dependencies>
-    </dependencyManagement>
-
-    <profiles>
-        <profile>
-            <id>m2e</id>
-            <activation>
-                <property>
-                    <name>m2e.version</name>
-                </property>
-            </activation>
-            <build>
-                <directory>target-ide</directory>
-            </build>
-        </profile>
-    </profiles>
-
-</project>

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/example/application/quickstart_dnd_junit_bdd/tests-bdd/pom.xml
----------------------------------------------------------------------
diff --git a/example/application/quickstart_dnd_junit_bdd/tests-bdd/pom.xml b/example/application/quickstart_dnd_junit_bdd/tests-bdd/pom.xml
deleted file mode 100644
index 811e2d8..0000000
--- a/example/application/quickstart_dnd_junit_bdd/tests-bdd/pom.xml
+++ /dev/null
@@ -1,99 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-         http://www.apache.org/licenses/LICENSE-2.0
-         
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.isis.example.application</groupId>
-        <artifactId>quickstart_dnd_junit_bdd</artifactId>
-        <version>1.0.0-SNAPSHOT</version>
-    </parent>
-
-	<artifactId>quickstart_dnd_junit_bdd-tests-bdd</artifactId>
-
-	<name>Quickstart (DnD/Junit/BDD)BDD BDD (Concordion) Tests</name>
-
-    <build>
-		<plugins>
-            <plugin>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <systemPropertyVariables>
-                        <concordion.output.dir>${project.build.directory}/concordion</concordion.output.dir>
-                    </systemPropertyVariables>
-                    <includes>
-                         <include>**/AllStories.java</include>
-                    </includes>
-                </configuration>
-            </plugin>
-		</plugins>
-    </build>
-	
-	<dependencies>
-
-		<!-- this project's dependencies -->
-		<dependency>
-			<groupId>${project.groupId}</groupId>
-            <artifactId>quickstart_dnd_junit_bdd-dom</artifactId>
-            <version>1.0.0-SNAPSHOT</version>
-        </dependency>
-
-        <!-- isis -->
-        <dependency>
-            <groupId>org.apache.isis.core</groupId>
-            <artifactId>isis-core-metamodel</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.isis.core</groupId>
-            <artifactId>isis-core-bytecode-cglib</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.isis.core</groupId>
-            <artifactId>isis-core-objectstore</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.isis.core</groupId>
-            <artifactId>isis-core-profilestore</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.isis.core</groupId>
-            <artifactId>isis-core-security</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.isis.security</groupId>
-            <artifactId>isis-security-file</artifactId>
-        </dependency>
-
-		<!-- BDD Viewers concordion dependencies -->
-		<dependency>
-			<groupId>org.apache.isis.viewer</groupId>
-            <artifactId>isis-viewer-bdd-concordion</artifactId>
-            <scope>test</scope>
-        </dependency>
-
-        <!--  direct dependency required because is LGPL licensed -->
-        <dependency>
-            <groupId>xom</groupId>
-            <artifactId>xom</artifactId>
-            <version>1.2.5</version>
-        </dependency>
-
-	</dependencies>
-</project>

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/java/viewer/bdd/AbstractApplicationStory.java
----------------------------------------------------------------------
diff --git a/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/java/viewer/bdd/AbstractApplicationStory.java b/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/java/viewer/bdd/AbstractApplicationStory.java
deleted file mode 100644
index 215a603..0000000
--- a/example/application/quickstart_dnd_junit_bdd/tests-bdd/src/test/java/viewer/bdd/AbstractApplicationStory.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package viewer.bdd;
-
-import org.apache.isis.viewer.bdd.concordion.AbstractIsisConcordionScenario;
-
-public abstract class AbstractApplicationStory extends AbstractIsisConcordionScenario {
-
-    /**
-     * This superclass also acts as the marker for the location of the custom
-     * CSS.
-     */
-    @Override
-    protected Class<?> customCssPackage() {
-        return AbstractApplicationStory.class;
-    }
-
-}


[12/19] ISIS-463: mothballing BDD viewer

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/src/site/resources/xmlmind/xhtml1-strict.dtd
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/src/site/resources/xmlmind/xhtml1-strict.dtd b/component/viewer/bdd/src/site/resources/xmlmind/xhtml1-strict.dtd
deleted file mode 100644
index d26726e..0000000
--- a/component/viewer/bdd/src/site/resources/xmlmind/xhtml1-strict.dtd
+++ /dev/null
@@ -1,988 +0,0 @@
-<!--
-   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.24 $
-   $Date: 2002/07/31 19:34:51 $
-
--->
-
-<!--================ 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
-  concordion:assertEquals  CDATA         #IMPLIED
-  concordion:set           CDATA         #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;
-  concordion:execute  CDATA         #IMPLIED
-  >
-
-<!--=================== 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
-  concordion:run  CDATA         #IMPLIED
-  >
-
-<!--===================== Inline Elements ================================-->
-
-<!ELEMENT span %Inline;> <!-- generic language/style container -->
-<!ATTLIST span
-  %attrs;
-  concordion:assertTrue  CDATA         #IMPLIED
-  concordion:assertFalse  CDATA         #IMPLIED
-  >
-
-<!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
-  isis:execute          CDATA    #IMPLIED
-  concordion:verifyRows CDATA    #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;
-  >
-

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/src/site/site.xml
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/src/site/site.xml b/component/viewer/bdd/src/site/site.xml
deleted file mode 100644
index 1bd601f..0000000
--- a/component/viewer/bdd/src/site/site.xml
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-         http://www.apache.org/licenses/LICENSE-2.0
-         
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-<project>
-
-	<body>
-		<breadcrumbs>
-			<item name="BDD Integration" href="index.html"/>
-		</breadcrumbs>
-
-		<menu name="BDD Integration">
-			<item name="About" href="index.html" />
-            <item name="Jottings" href="jottings.html" />
-		</menu>
-
-        <menu name="Viewer Modules">
-            <item name="HTML" href="../html/index.html" />
-            <item name="Scimpi" href="../scimpi/index.html" />
-            <item name="Wicket" href="../wicket/index.html" />
-            <item name="RestfulObjects" href="../restfulobjects/index.html" />
-            <item name="JUnit Support" href="../junit/index.html" />
-            <item name="BDD Integration" href="../bdd/index.html" />
-            <item name="DnD" href="../dnd/index.html" />
-        </menu>
-        
-        <menu name="BDD Modules">
-            <item name="Common" href="./bdd-common/index.html" />
-            <item name="Concordion" href="./bdd-concordion/index.html" />
-        </menu>
-
-		<menu name="Documentation">
-			<item name="${docbkxGuideTitle} (PDF)" href="docbkx/pdf/${docbkxGuideName}.pdf" />
-			<item name="${docbkxGuideTitle} (HTML)" href="docbkx/html/guide/${docbkxGuideName}.html" />
-		</menu>
-
-		<menu name="Maven Reports" ref="reports" />
-	</body>
-
-</project>

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/tck/pom.xml
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/tck/pom.xml b/component/viewer/bdd/tck/pom.xml
deleted file mode 100644
index 46793e3..0000000
--- a/component/viewer/bdd/tck/pom.xml
+++ /dev/null
@@ -1,113 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-         http://www.apache.org/licenses/LICENSE-2.0
-         
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
---><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.apache.isis.core</groupId>
-        <artifactId>isis-core-tck</artifactId>
-        <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../../../../core/tck/pom.xml</relativePath>
-    </parent>
-
-    <groupId>org.apache.isis.viewer</groupId>
-	<artifactId>isis-viewer-bdd-concordion-tck</artifactId>
-
-	<name>Isis BDD Viewer (Concordion) TCK tests</name>
-
-    <properties>
-        <maven.test.skip>true</maven.test.skip>
-
-		<!-- until someone comes up with a better solution -->
-        <distMgmtSiteUrl>file:///tmp/m2-sites/isis/viewer/bdd</distMgmtSiteUrl>
-
-    </properties>
-    
-    <build>
-		<plugins>
-            <plugin>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <systemPropertyVariables>
-                        <concordion.output.dir>${project.build.directory}/concordion</concordion.output.dir>
-                    </systemPropertyVariables>
-                    <includes>
-                         <include>**/AllStories.java</include>
-                    </includes>
-                </configuration>
-            </plugin>
-		</plugins>
-    </build>
-	
-	<dependencies>
-
-		<!-- this project's dependencies -->
-        <dependency>
-            <groupId>org.apache.isis.core</groupId>
-            <artifactId>isis-core-tck-fixture</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.isis.core</groupId>
-            <artifactId>isis-core-bytecode-cglib</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.isis.core</groupId>
-            <artifactId>isis-core-objectstore</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.isis.core</groupId>
-            <artifactId>isis-core-profilestore</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.isis.core</groupId>
-            <artifactId>isis-core-security</artifactId>
-        </dependency>
-
-
-		<!-- BDD Viewers concordion dependencies -->
-		<dependency>
-			<groupId>org.apache.isis.viewer</groupId>
-            <artifactId>isis-viewer-bdd-concordion</artifactId>
-            <version>1.0.0-SNAPSHOT</version>
-            <scope>test</scope>
-        </dependency>
-
-        <!--  direct dependency required because is LGPL licensed -->
-        <dependency>
-            <groupId>xom</groupId>
-            <artifactId>xom</artifactId>
-            <version>1.2.5</version>
-            <exclusions>
-            <exclusion>
-            	<!-- for dependency convergence -->
-            	<groupId>xml-apis</groupId>
-            	<artifactId>xml-apis</artifactId>
-            </exclusion>
-            </exclusions>
-        </dependency>
-        
-        <dependency>
-        	<groupId>xml-apis</groupId>
-        	<artifactId>xml-apis</artifactId>
-        	<version>2.0.2</version>
-        </dependency>
-
-	</dependencies>
-</project>

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/tck/src/test/java/viewer/bdd/AbstractApplicationStory.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/tck/src/test/java/viewer/bdd/AbstractApplicationStory.java b/component/viewer/bdd/tck/src/test/java/viewer/bdd/AbstractApplicationStory.java
deleted file mode 100644
index 215a603..0000000
--- a/component/viewer/bdd/tck/src/test/java/viewer/bdd/AbstractApplicationStory.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package viewer.bdd;
-
-import org.apache.isis.viewer.bdd.concordion.AbstractIsisConcordionScenario;
-
-public abstract class AbstractApplicationStory extends AbstractIsisConcordionScenario {
-
-    /**
-     * This superclass also acts as the marker for the location of the custom
-     * CSS.
-     */
-    @Override
-    protected Class<?> customCssPackage() {
-        return AbstractApplicationStory.class;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/tck/src/test/java/viewer/bdd/common/BootstrapInExplorationMode.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/tck/src/test/java/viewer/bdd/common/BootstrapInExplorationMode.java b/component/viewer/bdd/tck/src/test/java/viewer/bdd/common/BootstrapInExplorationMode.java
deleted file mode 100644
index 163a30e..0000000
--- a/component/viewer/bdd/tck/src/test/java/viewer/bdd/common/BootstrapInExplorationMode.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package viewer.bdd.common;
-
-import org.apache.isis.viewer.bdd.concordion.AbstractIsisConcordionScenario;
-
-public class BootstrapInExplorationMode extends AbstractIsisConcordionScenario {
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/tck/src/test/java/viewer/bdd/common/ToDoItems.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/tck/src/test/java/viewer/bdd/common/ToDoItems.java b/component/viewer/bdd/tck/src/test/java/viewer/bdd/common/ToDoItems.java
deleted file mode 100644
index 7b13f27..0000000
--- a/component/viewer/bdd/tck/src/test/java/viewer/bdd/common/ToDoItems.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package viewer.bdd.common;
-
-import org.apache.isis.viewer.bdd.concordion.AbstractIsisConcordionScenario;
-
-public class ToDoItems extends AbstractIsisConcordionScenario {
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/tck/src/test/java/viewer/bdd/stories/AllStories.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/tck/src/test/java/viewer/bdd/stories/AllStories.java b/component/viewer/bdd/tck/src/test/java/viewer/bdd/stories/AllStories.java
deleted file mode 100644
index cd172c7..0000000
--- a/component/viewer/bdd/tck/src/test/java/viewer/bdd/stories/AllStories.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package viewer.bdd.stories;
-
-import viewer.bdd.AbstractApplicationStory;
-
-public class AllStories extends AbstractApplicationStory {
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/tck/src/test/java/viewer/bdd/stories/todo/Fixtures.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/tck/src/test/java/viewer/bdd/stories/todo/Fixtures.java b/component/viewer/bdd/tck/src/test/java/viewer/bdd/stories/todo/Fixtures.java
deleted file mode 100644
index eeb8895..0000000
--- a/component/viewer/bdd/tck/src/test/java/viewer/bdd/stories/todo/Fixtures.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package viewer.bdd.stories.todo;
-
-import viewer.bdd.AbstractApplicationStory;
-
-public class Fixtures extends AbstractApplicationStory {
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/tck/src/test/java/viewer/bdd/stories/todo/Index.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/tck/src/test/java/viewer/bdd/stories/todo/Index.java b/component/viewer/bdd/tck/src/test/java/viewer/bdd/stories/todo/Index.java
deleted file mode 100644
index bdf0259..0000000
--- a/component/viewer/bdd/tck/src/test/java/viewer/bdd/stories/todo/Index.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package viewer.bdd.stories.todo;
-
-import viewer.bdd.AbstractApplicationStory;
-
-public class Index extends AbstractApplicationStory {
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/tck/src/test/java/viewer/bdd/stories/todo/ScenarioMarkItemAsDone.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/tck/src/test/java/viewer/bdd/stories/todo/ScenarioMarkItemAsDone.java b/component/viewer/bdd/tck/src/test/java/viewer/bdd/stories/todo/ScenarioMarkItemAsDone.java
deleted file mode 100644
index b4715e2..0000000
--- a/component/viewer/bdd/tck/src/test/java/viewer/bdd/stories/todo/ScenarioMarkItemAsDone.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package viewer.bdd.stories.todo;
-
-import viewer.bdd.AbstractApplicationStory;
-
-public class ScenarioMarkItemAsDone extends AbstractApplicationStory {
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/tck/src/test/resources/dtd/xhtml-lat1.ent
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/tck/src/test/resources/dtd/xhtml-lat1.ent b/component/viewer/bdd/tck/src/test/resources/dtd/xhtml-lat1.ent
deleted file mode 100644
index ffee223..0000000
--- a/component/viewer/bdd/tck/src/test/resources/dtd/xhtml-lat1.ent
+++ /dev/null
@@ -1,196 +0,0 @@
-<!-- Portions (C) International Organization for Standardization 1986
-     Permission to copy in any form is granted for use with
-     conforming SGML systems and applications as defined in
-     ISO 8879, provided this notice is included in all copies.
--->
-<!-- Character entity set. Typical invocation:
-    <!ENTITY % HTMLlat1 PUBLIC
-       "-//W3C//ENTITIES Latin 1 for XHTML//EN"
-       "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent">
-    %HTMLlat1;
--->
-
-<!ENTITY nbsp   "&#160;"> <!-- no-break space = non-breaking space,
-                                  U+00A0 ISOnum -->
-<!ENTITY iexcl  "&#161;"> <!-- inverted exclamation mark, U+00A1 ISOnum -->
-<!ENTITY cent   "&#162;"> <!-- cent sign, U+00A2 ISOnum -->
-<!ENTITY pound  "&#163;"> <!-- pound sign, U+00A3 ISOnum -->
-<!ENTITY curren "&#164;"> <!-- currency sign, U+00A4 ISOnum -->
-<!ENTITY yen    "&#165;"> <!-- yen sign = yuan sign, U+00A5 ISOnum -->
-<!ENTITY brvbar "&#166;"> <!-- broken bar = broken vertical bar,
-                                  U+00A6 ISOnum -->
-<!ENTITY sect   "&#167;"> <!-- section sign, U+00A7 ISOnum -->
-<!ENTITY uml    "&#168;"> <!-- diaeresis = spacing diaeresis,
-                                  U+00A8 ISOdia -->
-<!ENTITY copy   "&#169;"> <!-- copyright sign, U+00A9 ISOnum -->
-<!ENTITY ordf   "&#170;"> <!-- feminine ordinal indicator, U+00AA ISOnum -->
-<!ENTITY laquo  "&#171;"> <!-- left-pointing double angle quotation mark
-                                  = left pointing guillemet, U+00AB ISOnum -->
-<!ENTITY not    "&#172;"> <!-- not sign = angled dash,
-                                  U+00AC ISOnum -->
-<!ENTITY shy    "&#173;"> <!-- soft hyphen = discretionary hyphen,
-                                  U+00AD ISOnum -->
-<!ENTITY reg    "&#174;"> <!-- registered sign = registered trade mark sign,
-                                  U+00AE ISOnum -->
-<!ENTITY macr   "&#175;"> <!-- macron = spacing macron = overline
-                                  = APL overbar, U+00AF ISOdia -->
-<!ENTITY deg    "&#176;"> <!-- degree sign, U+00B0 ISOnum -->
-<!ENTITY plusmn "&#177;"> <!-- plus-minus sign = plus-or-minus sign,
-                                  U+00B1 ISOnum -->
-<!ENTITY sup2   "&#178;"> <!-- superscript two = superscript digit two
-                                  = squared, U+00B2 ISOnum -->
-<!ENTITY sup3   "&#179;"> <!-- superscript three = superscript digit three
-                                  = cubed, U+00B3 ISOnum -->
-<!ENTITY acute  "&#180;"> <!-- acute accent = spacing acute,
-                                  U+00B4 ISOdia -->
-<!ENTITY micro  "&#181;"> <!-- micro sign, U+00B5 ISOnum -->
-<!ENTITY para   "&#182;"> <!-- pilcrow sign = paragraph sign,
-                                  U+00B6 ISOnum -->
-<!ENTITY middot "&#183;"> <!-- middle dot = Georgian comma
-                                  = Greek middle dot, U+00B7 ISOnum -->
-<!ENTITY cedil  "&#184;"> <!-- cedilla = spacing cedilla, U+00B8 ISOdia -->
-<!ENTITY sup1   "&#185;"> <!-- superscript one = superscript digit one,
-                                  U+00B9 ISOnum -->
-<!ENTITY ordm   "&#186;"> <!-- masculine ordinal indicator,
-                                  U+00BA ISOnum -->
-<!ENTITY raquo  "&#187;"> <!-- right-pointing double angle quotation mark
-                                  = right pointing guillemet, U+00BB ISOnum -->
-<!ENTITY frac14 "&#188;"> <!-- vulgar fraction one quarter
-                                  = fraction one quarter, U+00BC ISOnum -->
-<!ENTITY frac12 "&#189;"> <!-- vulgar fraction one half
-                                  = fraction one half, U+00BD ISOnum -->
-<!ENTITY frac34 "&#190;"> <!-- vulgar fraction three quarters
-                                  = fraction three quarters, U+00BE ISOnum -->
-<!ENTITY iquest "&#191;"> <!-- inverted question mark
-                                  = turned question mark, U+00BF ISOnum -->
-<!ENTITY Agrave "&#192;"> <!-- latin capital letter A with grave
-                                  = latin capital letter A grave,
-                                  U+00C0 ISOlat1 -->
-<!ENTITY Aacute "&#193;"> <!-- latin capital letter A with acute,
-                                  U+00C1 ISOlat1 -->
-<!ENTITY Acirc  "&#194;"> <!-- latin capital letter A with circumflex,
-                                  U+00C2 ISOlat1 -->
-<!ENTITY Atilde "&#195;"> <!-- latin capital letter A with tilde,
-                                  U+00C3 ISOlat1 -->
-<!ENTITY Auml   "&#196;"> <!-- latin capital letter A with diaeresis,
-                                  U+00C4 ISOlat1 -->
-<!ENTITY Aring  "&#197;"> <!-- latin capital letter A with ring above
-                                  = latin capital letter A ring,
-                                  U+00C5 ISOlat1 -->
-<!ENTITY AElig  "&#198;"> <!-- latin capital letter AE
-                                  = latin capital ligature AE,
-                                  U+00C6 ISOlat1 -->
-<!ENTITY Ccedil "&#199;"> <!-- latin capital letter C with cedilla,
-                                  U+00C7 ISOlat1 -->
-<!ENTITY Egrave "&#200;"> <!-- latin capital letter E with grave,
-                                  U+00C8 ISOlat1 -->
-<!ENTITY Eacute "&#201;"> <!-- latin capital letter E with acute,
-                                  U+00C9 ISOlat1 -->
-<!ENTITY Ecirc  "&#202;"> <!-- latin capital letter E with circumflex,
-                                  U+00CA ISOlat1 -->
-<!ENTITY Euml   "&#203;"> <!-- latin capital letter E with diaeresis,
-                                  U+00CB ISOlat1 -->
-<!ENTITY Igrave "&#204;"> <!-- latin capital letter I with grave,
-                                  U+00CC ISOlat1 -->
-<!ENTITY Iacute "&#205;"> <!-- latin capital letter I with acute,
-                                  U+00CD ISOlat1 -->
-<!ENTITY Icirc  "&#206;"> <!-- latin capital letter I with circumflex,
-                                  U+00CE ISOlat1 -->
-<!ENTITY Iuml   "&#207;"> <!-- latin capital letter I with diaeresis,
-                                  U+00CF ISOlat1 -->
-<!ENTITY ETH    "&#208;"> <!-- latin capital letter ETH, U+00D0 ISOlat1 -->
-<!ENTITY Ntilde "&#209;"> <!-- latin capital letter N with tilde,
-                                  U+00D1 ISOlat1 -->
-<!ENTITY Ograve "&#210;"> <!-- latin capital letter O with grave,
-                                  U+00D2 ISOlat1 -->
-<!ENTITY Oacute "&#211;"> <!-- latin capital letter O with acute,
-                                  U+00D3 ISOlat1 -->
-<!ENTITY Ocirc  "&#212;"> <!-- latin capital letter O with circumflex,
-                                  U+00D4 ISOlat1 -->
-<!ENTITY Otilde "&#213;"> <!-- latin capital letter O with tilde,
-                                  U+00D5 ISOlat1 -->
-<!ENTITY Ouml   "&#214;"> <!-- latin capital letter O with diaeresis,
-                                  U+00D6 ISOlat1 -->
-<!ENTITY times  "&#215;"> <!-- multiplication sign, U+00D7 ISOnum -->
-<!ENTITY Oslash "&#216;"> <!-- latin capital letter O with stroke
-                                  = latin capital letter O slash,
-                                  U+00D8 ISOlat1 -->
-<!ENTITY Ugrave "&#217;"> <!-- latin capital letter U with grave,
-                                  U+00D9 ISOlat1 -->
-<!ENTITY Uacute "&#218;"> <!-- latin capital letter U with acute,
-                                  U+00DA ISOlat1 -->
-<!ENTITY Ucirc  "&#219;"> <!-- latin capital letter U with circumflex,
-                                  U+00DB ISOlat1 -->
-<!ENTITY Uuml   "&#220;"> <!-- latin capital letter U with diaeresis,
-                                  U+00DC ISOlat1 -->
-<!ENTITY Yacute "&#221;"> <!-- latin capital letter Y with acute,
-                                  U+00DD ISOlat1 -->
-<!ENTITY THORN  "&#222;"> <!-- latin capital letter THORN,
-                                  U+00DE ISOlat1 -->
-<!ENTITY szlig  "&#223;"> <!-- latin small letter sharp s = ess-zed,
-                                  U+00DF ISOlat1 -->
-<!ENTITY agrave "&#224;"> <!-- latin small letter a with grave
-                                  = latin small letter a grave,
-                                  U+00E0 ISOlat1 -->
-<!ENTITY aacute "&#225;"> <!-- latin small letter a with acute,
-                                  U+00E1 ISOlat1 -->
-<!ENTITY acirc  "&#226;"> <!-- latin small letter a with circumflex,
-                                  U+00E2 ISOlat1 -->
-<!ENTITY atilde "&#227;"> <!-- latin small letter a with tilde,
-                                  U+00E3 ISOlat1 -->
-<!ENTITY auml   "&#228;"> <!-- latin small letter a with diaeresis,
-                                  U+00E4 ISOlat1 -->
-<!ENTITY aring  "&#229;"> <!-- latin small letter a with ring above
-                                  = latin small letter a ring,
-                                  U+00E5 ISOlat1 -->
-<!ENTITY aelig  "&#230;"> <!-- latin small letter ae
-                                  = latin small ligature ae, U+00E6 ISOlat1 -->
-<!ENTITY ccedil "&#231;"> <!-- latin small letter c with cedilla,
-                                  U+00E7 ISOlat1 -->
-<!ENTITY egrave "&#232;"> <!-- latin small letter e with grave,
-                                  U+00E8 ISOlat1 -->
-<!ENTITY eacute "&#233;"> <!-- latin small letter e with acute,
-                                  U+00E9 ISOlat1 -->
-<!ENTITY ecirc  "&#234;"> <!-- latin small letter e with circumflex,
-                                  U+00EA ISOlat1 -->
-<!ENTITY euml   "&#235;"> <!-- latin small letter e with diaeresis,
-                                  U+00EB ISOlat1 -->
-<!ENTITY igrave "&#236;"> <!-- latin small letter i with grave,
-                                  U+00EC ISOlat1 -->
-<!ENTITY iacute "&#237;"> <!-- latin small letter i with acute,
-                                  U+00ED ISOlat1 -->
-<!ENTITY icirc  "&#238;"> <!-- latin small letter i with circumflex,
-                                  U+00EE ISOlat1 -->
-<!ENTITY iuml   "&#239;"> <!-- latin small letter i with diaeresis,
-                                  U+00EF ISOlat1 -->
-<!ENTITY eth    "&#240;"> <!-- latin small letter eth, U+00F0 ISOlat1 -->
-<!ENTITY ntilde "&#241;"> <!-- latin small letter n with tilde,
-                                  U+00F1 ISOlat1 -->
-<!ENTITY ograve "&#242;"> <!-- latin small letter o with grave,
-                                  U+00F2 ISOlat1 -->
-<!ENTITY oacute "&#243;"> <!-- latin small letter o with acute,
-                                  U+00F3 ISOlat1 -->
-<!ENTITY ocirc  "&#244;"> <!-- latin small letter o with circumflex,
-                                  U+00F4 ISOlat1 -->
-<!ENTITY otilde "&#245;"> <!-- latin small letter o with tilde,
-                                  U+00F5 ISOlat1 -->
-<!ENTITY ouml   "&#246;"> <!-- latin small letter o with diaeresis,
-                                  U+00F6 ISOlat1 -->
-<!ENTITY divide "&#247;"> <!-- division sign, U+00F7 ISOnum -->
-<!ENTITY oslash "&#248;"> <!-- latin small letter o with stroke,
-                                  = latin small letter o slash,
-                                  U+00F8 ISOlat1 -->
-<!ENTITY ugrave "&#249;"> <!-- latin small letter u with grave,
-                                  U+00F9 ISOlat1 -->
-<!ENTITY uacute "&#250;"> <!-- latin small letter u with acute,
-                                  U+00FA ISOlat1 -->
-<!ENTITY ucirc  "&#251;"> <!-- latin small letter u with circumflex,
-                                  U+00FB ISOlat1 -->
-<!ENTITY uuml   "&#252;"> <!-- latin small letter u with diaeresis,
-                                  U+00FC ISOlat1 -->
-<!ENTITY yacute "&#253;"> <!-- latin small letter y with acute,
-                                  U+00FD ISOlat1 -->
-<!ENTITY thorn  "&#254;"> <!-- latin small letter thorn,
-                                  U+00FE ISOlat1 -->
-<!ENTITY yuml   "&#255;"> <!-- latin small letter y with diaeresis,
-                                  U+00FF ISOlat1 -->

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/tck/src/test/resources/dtd/xhtml-special.ent
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/tck/src/test/resources/dtd/xhtml-special.ent b/component/viewer/bdd/tck/src/test/resources/dtd/xhtml-special.ent
deleted file mode 100644
index ca358b2..0000000
--- a/component/viewer/bdd/tck/src/test/resources/dtd/xhtml-special.ent
+++ /dev/null
@@ -1,80 +0,0 @@
-<!-- Special characters for XHTML -->
-
-<!-- Character entity set. Typical invocation:
-     <!ENTITY % HTMLspecial PUBLIC
-        "-//W3C//ENTITIES Special for XHTML//EN"
-        "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent">
-     %HTMLspecial;
--->
-
-<!-- Portions (C) International Organization for Standardization 1986:
-     Permission to copy in any form is granted for use with
-     conforming SGML systems and applications as defined in
-     ISO 8879, provided this notice is included in all copies.
--->
-
-<!-- Relevant ISO entity set is given unless names are newly introduced.
-     New names (i.e., not in ISO 8879 list) do not clash with any
-     existing ISO 8879 entity names. ISO 10646 character numbers
-     are given for each character, in hex. values are decimal
-     conversions of the ISO 10646 values and refer to the document
-     character set. Names are Unicode names. 
--->
-
-<!-- C0 Controls and Basic Latin -->
-<!ENTITY quot    "&#34;"> <!--  quotation mark, U+0022 ISOnum -->
-<!ENTITY amp     "&#38;#38;"> <!--  ampersand, U+0026 ISOnum -->
-<!ENTITY lt      "&#38;#60;"> <!--  less-than sign, U+003C ISOnum -->
-<!ENTITY gt      "&#62;"> <!--  greater-than sign, U+003E ISOnum -->
-<!ENTITY apos	 "&#39;"> <!--  apostrophe = APL quote, U+0027 ISOnum -->
-
-<!-- Latin Extended-A -->
-<!ENTITY OElig   "&#338;"> <!--  latin capital ligature OE,
-                                    U+0152 ISOlat2 -->
-<!ENTITY oelig   "&#339;"> <!--  latin small ligature oe, U+0153 ISOlat2 -->
-<!-- ligature is a misnomer, this is a separate character in some languages -->
-<!ENTITY Scaron  "&#352;"> <!--  latin capital letter S with caron,
-                                    U+0160 ISOlat2 -->
-<!ENTITY scaron  "&#353;"> <!--  latin small letter s with caron,
-                                    U+0161 ISOlat2 -->
-<!ENTITY Yuml    "&#376;"> <!--  latin capital letter Y with diaeresis,
-                                    U+0178 ISOlat2 -->
-
-<!-- Spacing Modifier Letters -->
-<!ENTITY circ    "&#710;"> <!--  modifier letter circumflex accent,
-                                    U+02C6 ISOpub -->
-<!ENTITY tilde   "&#732;"> <!--  small tilde, U+02DC ISOdia -->
-
-<!-- General Punctuation -->
-<!ENTITY ensp    "&#8194;"> <!-- en space, U+2002 ISOpub -->
-<!ENTITY emsp    "&#8195;"> <!-- em space, U+2003 ISOpub -->
-<!ENTITY thinsp  "&#8201;"> <!-- thin space, U+2009 ISOpub -->
-<!ENTITY zwnj    "&#8204;"> <!-- zero width non-joiner,
-                                    U+200C NEW RFC 2070 -->
-<!ENTITY zwj     "&#8205;"> <!-- zero width joiner, U+200D NEW RFC 2070 -->
-<!ENTITY lrm     "&#8206;"> <!-- left-to-right mark, U+200E NEW RFC 2070 -->
-<!ENTITY rlm     "&#8207;"> <!-- right-to-left mark, U+200F NEW RFC 2070 -->
-<!ENTITY ndash   "&#8211;"> <!-- en dash, U+2013 ISOpub -->
-<!ENTITY mdash   "&#8212;"> <!-- em dash, U+2014 ISOpub -->
-<!ENTITY lsquo   "&#8216;"> <!-- left single quotation mark,
-                                    U+2018 ISOnum -->
-<!ENTITY rsquo   "&#8217;"> <!-- right single quotation mark,
-                                    U+2019 ISOnum -->
-<!ENTITY sbquo   "&#8218;"> <!-- single low-9 quotation mark, U+201A NEW -->
-<!ENTITY ldquo   "&#8220;"> <!-- left double quotation mark,
-                                    U+201C ISOnum -->
-<!ENTITY rdquo   "&#8221;"> <!-- right double quotation mark,
-                                    U+201D ISOnum -->
-<!ENTITY bdquo   "&#8222;"> <!-- double low-9 quotation mark, U+201E NEW -->
-<!ENTITY dagger  "&#8224;"> <!-- dagger, U+2020 ISOpub -->
-<!ENTITY Dagger  "&#8225;"> <!-- double dagger, U+2021 ISOpub -->
-<!ENTITY permil  "&#8240;"> <!-- per mille sign, U+2030 ISOtech -->
-<!ENTITY lsaquo  "&#8249;"> <!-- single left-pointing angle quotation mark,
-                                    U+2039 ISO proposed -->
-<!-- lsaquo is proposed but not yet ISO standardized -->
-<!ENTITY rsaquo  "&#8250;"> <!-- single right-pointing angle quotation mark,
-                                    U+203A ISO proposed -->
-<!-- rsaquo is proposed but not yet ISO standardized -->
-
-<!-- Currency Symbols -->
-<!ENTITY euro   "&#8364;"> <!--  euro sign, U+20AC NEW -->

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/tck/src/test/resources/dtd/xhtml-symbol.ent
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/tck/src/test/resources/dtd/xhtml-symbol.ent b/component/viewer/bdd/tck/src/test/resources/dtd/xhtml-symbol.ent
deleted file mode 100644
index 63c2abf..0000000
--- a/component/viewer/bdd/tck/src/test/resources/dtd/xhtml-symbol.ent
+++ /dev/null
@@ -1,237 +0,0 @@
-<!-- Mathematical, Greek and Symbolic characters for XHTML -->
-
-<!-- Character entity set. Typical invocation:
-     <!ENTITY % HTMLsymbol PUBLIC
-        "-//W3C//ENTITIES Symbols for XHTML//EN"
-        "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent">
-     %HTMLsymbol;
--->
-
-<!-- Portions (C) International Organization for Standardization 1986:
-     Permission to copy in any form is granted for use with
-     conforming SGML systems and applications as defined in
-     ISO 8879, provided this notice is included in all copies.
--->
-
-<!-- Relevant ISO entity set is given unless names are newly introduced.
-     New names (i.e., not in ISO 8879 list) do not clash with any
-     existing ISO 8879 entity names. ISO 10646 character numbers
-     are given for each character, in hex. values are decimal
-     conversions of the ISO 10646 values and refer to the document
-     character set. Names are Unicode names. 
--->
-
-<!-- Latin Extended-B -->
-<!ENTITY fnof     "&#402;"> <!-- latin small letter f with hook = function
-                                    = florin, U+0192 ISOtech -->
-
-<!-- Greek -->
-<!ENTITY Alpha    "&#913;"> <!-- greek capital letter alpha, U+0391 -->
-<!ENTITY Beta     "&#914;"> <!-- greek capital letter beta, U+0392 -->
-<!ENTITY Gamma    "&#915;"> <!-- greek capital letter gamma,
-                                    U+0393 ISOgrk3 -->
-<!ENTITY Delta    "&#916;"> <!-- greek capital letter delta,
-                                    U+0394 ISOgrk3 -->
-<!ENTITY Epsilon  "&#917;"> <!-- greek capital letter epsilon, U+0395 -->
-<!ENTITY Zeta     "&#918;"> <!-- greek capital letter zeta, U+0396 -->
-<!ENTITY Eta      "&#919;"> <!-- greek capital letter eta, U+0397 -->
-<!ENTITY Theta    "&#920;"> <!-- greek capital letter theta,
-                                    U+0398 ISOgrk3 -->
-<!ENTITY Iota     "&#921;"> <!-- greek capital letter iota, U+0399 -->
-<!ENTITY Kappa    "&#922;"> <!-- greek capital letter kappa, U+039A -->
-<!ENTITY Lambda   "&#923;"> <!-- greek capital letter lamda,
-                                    U+039B ISOgrk3 -->
-<!ENTITY Mu       "&#924;"> <!-- greek capital letter mu, U+039C -->
-<!ENTITY Nu       "&#925;"> <!-- greek capital letter nu, U+039D -->
-<!ENTITY Xi       "&#926;"> <!-- greek capital letter xi, U+039E ISOgrk3 -->
-<!ENTITY Omicron  "&#927;"> <!-- greek capital letter omicron, U+039F -->
-<!ENTITY Pi       "&#928;"> <!-- greek capital letter pi, U+03A0 ISOgrk3 -->
-<!ENTITY Rho      "&#929;"> <!-- greek capital letter rho, U+03A1 -->
-<!-- there is no Sigmaf, and no U+03A2 character either -->
-<!ENTITY Sigma    "&#931;"> <!-- greek capital letter sigma,
-                                    U+03A3 ISOgrk3 -->
-<!ENTITY Tau      "&#932;"> <!-- greek capital letter tau, U+03A4 -->
-<!ENTITY Upsilon  "&#933;"> <!-- greek capital letter upsilon,
-                                    U+03A5 ISOgrk3 -->
-<!ENTITY Phi      "&#934;"> <!-- greek capital letter phi,
-                                    U+03A6 ISOgrk3 -->
-<!ENTITY Chi      "&#935;"> <!-- greek capital letter chi, U+03A7 -->
-<!ENTITY Psi      "&#936;"> <!-- greek capital letter psi,
-                                    U+03A8 ISOgrk3 -->
-<!ENTITY Omega    "&#937;"> <!-- greek capital letter omega,
-                                    U+03A9 ISOgrk3 -->
-
-<!ENTITY alpha    "&#945;"> <!-- greek small letter alpha,
-                                    U+03B1 ISOgrk3 -->
-<!ENTITY beta     "&#946;"> <!-- greek small letter beta, U+03B2 ISOgrk3 -->
-<!ENTITY gamma    "&#947;"> <!-- greek small letter gamma,
-                                    U+03B3 ISOgrk3 -->
-<!ENTITY delta    "&#948;"> <!-- greek small letter delta,
-                                    U+03B4 ISOgrk3 -->
-<!ENTITY epsilon  "&#949;"> <!-- greek small letter epsilon,
-                                    U+03B5 ISOgrk3 -->
-<!ENTITY zeta     "&#950;"> <!-- greek small letter zeta, U+03B6 ISOgrk3 -->
-<!ENTITY eta      "&#951;"> <!-- greek small letter eta, U+03B7 ISOgrk3 -->
-<!ENTITY theta    "&#952;"> <!-- greek small letter theta,
-                                    U+03B8 ISOgrk3 -->
-<!ENTITY iota     "&#953;"> <!-- greek small letter iota, U+03B9 ISOgrk3 -->
-<!ENTITY kappa    "&#954;"> <!-- greek small letter kappa,
-                                    U+03BA ISOgrk3 -->
-<!ENTITY lambda   "&#955;"> <!-- greek small letter lamda,
-                                    U+03BB ISOgrk3 -->
-<!ENTITY mu       "&#956;"> <!-- greek small letter mu, U+03BC ISOgrk3 -->
-<!ENTITY nu       "&#957;"> <!-- greek small letter nu, U+03BD ISOgrk3 -->
-<!ENTITY xi       "&#958;"> <!-- greek small letter xi, U+03BE ISOgrk3 -->
-<!ENTITY omicron  "&#959;"> <!-- greek small letter omicron, U+03BF NEW -->
-<!ENTITY pi       "&#960;"> <!-- greek small letter pi, U+03C0 ISOgrk3 -->
-<!ENTITY rho      "&#961;"> <!-- greek small letter rho, U+03C1 ISOgrk3 -->
-<!ENTITY sigmaf   "&#962;"> <!-- greek small letter final sigma,
-                                    U+03C2 ISOgrk3 -->
-<!ENTITY sigma    "&#963;"> <!-- greek small letter sigma,
-                                    U+03C3 ISOgrk3 -->
-<!ENTITY tau      "&#964;"> <!-- greek small letter tau, U+03C4 ISOgrk3 -->
-<!ENTITY upsilon  "&#965;"> <!-- greek small letter upsilon,
-                                    U+03C5 ISOgrk3 -->
-<!ENTITY phi      "&#966;"> <!-- greek small letter phi, U+03C6 ISOgrk3 -->
-<!ENTITY chi      "&#967;"> <!-- greek small letter chi, U+03C7 ISOgrk3 -->
-<!ENTITY psi      "&#968;"> <!-- greek small letter psi, U+03C8 ISOgrk3 -->
-<!ENTITY omega    "&#969;"> <!-- greek small letter omega,
-                                    U+03C9 ISOgrk3 -->
-<!ENTITY thetasym "&#977;"> <!-- greek theta symbol,
-                                    U+03D1 NEW -->
-<!ENTITY upsih    "&#978;"> <!-- greek upsilon with hook symbol,
-                                    U+03D2 NEW -->
-<!ENTITY piv      "&#982;"> <!-- greek pi symbol, U+03D6 ISOgrk3 -->
-
-<!-- General Punctuation -->
-<!ENTITY bull     "&#8226;"> <!-- bullet = black small circle,
-                                     U+2022 ISOpub  -->
-<!-- bullet is NOT the same as bullet operator, U+2219 -->
-<!ENTITY hellip   "&#8230;"> <!-- horizontal ellipsis = three dot leader,
-                                     U+2026 ISOpub  -->
-<!ENTITY prime    "&#8242;"> <!-- prime = minutes = feet, U+2032 ISOtech -->
-<!ENTITY Prime    "&#8243;"> <!-- double prime = seconds = inches,
-                                     U+2033 ISOtech -->
-<!ENTITY oline    "&#8254;"> <!-- overline = spacing overscore,
-                                     U+203E NEW -->
-<!ENTITY frasl    "&#8260;"> <!-- fraction slash, U+2044 NEW -->
-
-<!-- Letterlike Symbols -->
-<!ENTITY weierp   "&#8472;"> <!-- script capital P = power set
-                                     = Weierstrass p, U+2118 ISOamso -->
-<!ENTITY image    "&#8465;"> <!-- black-letter capital I = imaginary part,
-                                     U+2111 ISOamso -->
-<!ENTITY real     "&#8476;"> <!-- black-letter capital R = real part symbol,
-                                     U+211C ISOamso -->
-<!ENTITY trade    "&#8482;"> <!-- trade mark sign, U+2122 ISOnum -->
-<!ENTITY alefsym  "&#8501;"> <!-- alef symbol = first transfinite cardinal,
-                                     U+2135 NEW -->
-<!-- alef symbol is NOT the same as hebrew letter alef,
-     U+05D0 although the same glyph could be used to depict both characters -->
-
-<!-- Arrows -->
-<!ENTITY larr     "&#8592;"> <!-- leftwards arrow, U+2190 ISOnum -->
-<!ENTITY uarr     "&#8593;"> <!-- upwards arrow, U+2191 ISOnum-->
-<!ENTITY rarr     "&#8594;"> <!-- rightwards arrow, U+2192 ISOnum -->
-<!ENTITY darr     "&#8595;"> <!-- downwards arrow, U+2193 ISOnum -->
-<!ENTITY harr     "&#8596;"> <!-- left right arrow, U+2194 ISOamsa -->
-<!ENTITY crarr    "&#8629;"> <!-- downwards arrow with corner leftwards
-                                     = carriage return, U+21B5 NEW -->
-<!ENTITY lArr     "&#8656;"> <!-- leftwards double arrow, U+21D0 ISOtech -->
-<!-- Unicode does not say that lArr is the same as the 'is implied by' arrow
-    but also does not have any other character for that function. So lArr can
-    be used for 'is implied by' as ISOtech suggests -->
-<!ENTITY uArr     "&#8657;"> <!-- upwards double arrow, U+21D1 ISOamsa -->
-<!ENTITY rArr     "&#8658;"> <!-- rightwards double arrow,
-                                     U+21D2 ISOtech -->
-<!-- Unicode does not say this is the 'implies' character but does not have 
-     another character with this function so rArr can be used for 'implies'
-     as ISOtech suggests -->
-<!ENTITY dArr     "&#8659;"> <!-- downwards double arrow, U+21D3 ISOamsa -->
-<!ENTITY hArr     "&#8660;"> <!-- left right double arrow,
-                                     U+21D4 ISOamsa -->
-
-<!-- Mathematical Operators -->
-<!ENTITY forall   "&#8704;"> <!-- for all, U+2200 ISOtech -->
-<!ENTITY part     "&#8706;"> <!-- partial differential, U+2202 ISOtech  -->
-<!ENTITY exist    "&#8707;"> <!-- there exists, U+2203 ISOtech -->
-<!ENTITY empty    "&#8709;"> <!-- empty set = null set, U+2205 ISOamso -->
-<!ENTITY nabla    "&#8711;"> <!-- nabla = backward difference,
-                                     U+2207 ISOtech -->
-<!ENTITY isin     "&#8712;"> <!-- element of, U+2208 ISOtech -->
-<!ENTITY notin    "&#8713;"> <!-- not an element of, U+2209 ISOtech -->
-<!ENTITY ni       "&#8715;"> <!-- contains as member, U+220B ISOtech -->
-<!ENTITY prod     "&#8719;"> <!-- n-ary product = product sign,
-                                     U+220F ISOamsb -->
-<!-- prod is NOT the same character as U+03A0 'greek capital letter pi' though
-     the same glyph might be used for both -->
-<!ENTITY sum      "&#8721;"> <!-- n-ary summation, U+2211 ISOamsb -->
-<!-- sum is NOT the same character as U+03A3 'greek capital letter sigma'
-     though the same glyph might be used for both -->
-<!ENTITY minus    "&#8722;"> <!-- minus sign, U+2212 ISOtech -->
-<!ENTITY lowast   "&#8727;"> <!-- asterisk operator, U+2217 ISOtech -->
-<!ENTITY radic    "&#8730;"> <!-- square root = radical sign,
-                                     U+221A ISOtech -->
-<!ENTITY prop     "&#8733;"> <!-- proportional to, U+221D ISOtech -->
-<!ENTITY infin    "&#8734;"> <!-- infinity, U+221E ISOtech -->
-<!ENTITY ang      "&#8736;"> <!-- angle, U+2220 ISOamso -->
-<!ENTITY and      "&#8743;"> <!-- logical and = wedge, U+2227 ISOtech -->
-<!ENTITY or       "&#8744;"> <!-- logical or = vee, U+2228 ISOtech -->
-<!ENTITY cap      "&#8745;"> <!-- intersection = cap, U+2229 ISOtech -->
-<!ENTITY cup      "&#8746;"> <!-- union = cup, U+222A ISOtech -->
-<!ENTITY int      "&#8747;"> <!-- integral, U+222B ISOtech -->
-<!ENTITY there4   "&#8756;"> <!-- therefore, U+2234 ISOtech -->
-<!ENTITY sim      "&#8764;"> <!-- tilde operator = varies with = similar to,
-                                     U+223C ISOtech -->
-<!-- tilde operator is NOT the same character as the tilde, U+007E,
-     although the same glyph might be used to represent both  -->
-<!ENTITY cong     "&#8773;"> <!-- approximately equal to, U+2245 ISOtech -->
-<!ENTITY asymp    "&#8776;"> <!-- almost equal to = asymptotic to,
-                                     U+2248 ISOamsr -->
-<!ENTITY ne       "&#8800;"> <!-- not equal to, U+2260 ISOtech -->
-<!ENTITY equiv    "&#8801;"> <!-- identical to, U+2261 ISOtech -->
-<!ENTITY le       "&#8804;"> <!-- less-than or equal to, U+2264 ISOtech -->
-<!ENTITY ge       "&#8805;"> <!-- greater-than or equal to,
-                                     U+2265 ISOtech -->
-<!ENTITY sub      "&#8834;"> <!-- subset of, U+2282 ISOtech -->
-<!ENTITY sup      "&#8835;"> <!-- superset of, U+2283 ISOtech -->
-<!ENTITY nsub     "&#8836;"> <!-- not a subset of, U+2284 ISOamsn -->
-<!ENTITY sube     "&#8838;"> <!-- subset of or equal to, U+2286 ISOtech -->
-<!ENTITY supe     "&#8839;"> <!-- superset of or equal to,
-                                     U+2287 ISOtech -->
-<!ENTITY oplus    "&#8853;"> <!-- circled plus = direct sum,
-                                     U+2295 ISOamsb -->
-<!ENTITY otimes   "&#8855;"> <!-- circled times = vector product,
-                                     U+2297 ISOamsb -->
-<!ENTITY perp     "&#8869;"> <!-- up tack = orthogonal to = perpendicular,
-                                     U+22A5 ISOtech -->
-<!ENTITY sdot     "&#8901;"> <!-- dot operator, U+22C5 ISOamsb -->
-<!-- dot operator is NOT the same character as U+00B7 middle dot -->
-
-<!-- Miscellaneous Technical -->
-<!ENTITY lceil    "&#8968;"> <!-- left ceiling = APL upstile,
-                                     U+2308 ISOamsc  -->
-<!ENTITY rceil    "&#8969;"> <!-- right ceiling, U+2309 ISOamsc  -->
-<!ENTITY lfloor   "&#8970;"> <!-- left floor = APL downstile,
-                                     U+230A ISOamsc  -->
-<!ENTITY rfloor   "&#8971;"> <!-- right floor, U+230B ISOamsc  -->
-<!ENTITY lang     "&#9001;"> <!-- left-pointing angle bracket = bra,
-                                     U+2329 ISOtech -->
-<!-- lang is NOT the same character as U+003C 'less than sign' 
-     or U+2039 'single left-pointing angle quotation mark' -->
-<!ENTITY rang     "&#9002;"> <!-- right-pointing angle bracket = ket,
-                                     U+232A ISOtech -->
-<!-- rang is NOT the same character as U+003E 'greater than sign' 
-     or U+203A 'single right-pointing angle quotation mark' -->
-
-<!-- Geometric Shapes -->
-<!ENTITY loz      "&#9674;"> <!-- lozenge, U+25CA ISOpub -->
-
-<!-- Miscellaneous Symbols -->
-<!ENTITY spades   "&#9824;"> <!-- black spade suit, U+2660 ISOpub -->
-<!-- black here seems to mean filled as opposed to hollow -->
-<!ENTITY clubs    "&#9827;"> <!-- black club suit = shamrock,
-                                     U+2663 ISOpub -->
-<!ENTITY hearts   "&#9829;"> <!-- black heart suit = valentine,
-                                     U+2665 ISOpub -->
-<!ENTITY diams    "&#9830;"> <!-- black diamond suit, U+2666 ISOpub -->


[03/19] ISIS-463: mothballing BDD viewer

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/src/main/appended-resources/supplemental-models.xml
----------------------------------------------------------------------
diff --git a/mothballed/bdd/src/main/appended-resources/supplemental-models.xml b/mothballed/bdd/src/main/appended-resources/supplemental-models.xml
new file mode 100644
index 0000000..ecd3906
--- /dev/null
+++ b/mothballed/bdd/src/main/appended-resources/supplemental-models.xml
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor 
+    license agreements. See the NOTICE file distributed with this work for additional 
+    information regarding copyright ownership. The ASF licenses this file to 
+    you under the Apache License, Version 2.0 (the "License"); you may not use 
+    this file except in compliance with the License. You may obtain a copy of 
+    the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required 
+    by applicable law or agreed to in writing, software distributed under the 
+    License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS 
+    OF ANY KIND, either express or implied. See the License for the specific 
+    language governing permissions and limitations under the License. -->
+<supplementalDataModels xmlns="http://maven.apache.org/supplemental-model/1.0.0"
+                        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+                        xsi:schemaLocation="http://maven.apache.org/supplemental-model/1.0.0 http://maven.apache.org/xsd/supplemental-model-1.0.0.xsd">
+
+  <supplement>
+    <project>
+      <groupId>aopalliance</groupId>
+      <artifactId>aopalliance</artifactId>
+      <version>1.0</version>
+      <licenses>
+          <license>
+              <name>Public Domain</name>
+          </license>
+      </licenses>
+    </project>
+  </supplement>
+
+  <supplement>
+   	<!-- not quite sure why licenses:download-license flags this, since license info seems to be in its POM -->
+    <project>
+		<groupId>org.datanucleus</groupId>
+	    <artifactId>datanucleus-jodatime</artifactId>
+	    <version>3.1.1</version>
+          <licenses>
+			<license>
+	            <name>The Apache Software License, Version 2.0</name>
+	            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+	        </license>
+	    </licenses>
+    </project>
+  </supplement>
+
+  <supplement>
+    <project>
+      <groupId>org.scannotation</groupId>
+      <artifactId>scannotation</artifactId>
+      <version>1.0.3</version>
+      <licenses>
+        <license>
+            <name>The Apache Software License, Version 2.0</name>
+            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+            <distribution>repo</distribution>          
+        </license>
+      </licenses>
+    </project>
+  </supplement>
+    
+  <supplement>
+    <project>
+      <groupId>dom4j</groupId>
+      <artifactId>dom4j</artifactId>
+      <version>1.6.1</version>
+      <licenses>
+        <license>
+            <name>BSD License</name>
+            <url>http://dom4j.sourceforge.net/dom4j-1.6.1/license.html</url>
+            <distribution>repo</distribution>          
+        </license>
+      </licenses>
+    </project>
+  </supplement>
+
+  <supplement>
+    <project>
+      <groupId>net.jcip</groupId>
+      <artifactId>jcip-annotations</artifactId>
+      <version>1.0</version>
+      <licenses>
+        <license>
+            <name>Creative Commons Attribution 2.5 License</name>
+            <url>http://creativecommons.org/licenses/by/2.5/</url>
+            <distribution>repo</distribution>          
+        </license>
+      </licenses>
+    </project>
+  </supplement>
+  
+
+  <supplement>
+    <project>
+      <groupId>xalan</groupId>
+      <artifactId>xalan</artifactId>
+      <version>2.7.0</version>
+      <licenses>
+        <license>
+            <name>The Apache Software License, Version 2.0</name>
+            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+            <distribution>repo</distribution>          
+        </license>
+      </licenses>
+    </project>
+  </supplement>
+
+ 
+</supplementalDataModels>

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/src/site/apt/index.apt
----------------------------------------------------------------------
diff --git a/mothballed/bdd/src/site/apt/index.apt b/mothballed/bdd/src/site/apt/index.apt
new file mode 100644
index 0000000..8ed00f0
--- /dev/null
+++ b/mothballed/bdd/src/site/apt/index.apt
@@ -0,0 +1,52 @@
+~~  Licensed to the Apache Software Foundation (ASF) under one
+~~  or more contributor license agreements.  See the NOTICE file
+~~  distributed with this work for additional information
+~~  regarding copyright ownership.  The ASF licenses this file
+~~  to you under the Apache License, Version 2.0 (the
+~~  "License"); you may not use this file except in compliance
+~~  with the License.  You may obtain a copy of the License at
+~~
+~~        http://www.apache.org/licenses/LICENSE-2.0
+~~
+~~  Unless required by applicable law or agreed to in writing,
+~~  software distributed under the License is distributed on an
+~~  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+~~  KIND, either express or implied.  See the License for the
+~~  specific language governing permissions and limitations
+~~  under the License.
+
+
+
+BDD Viewer
+
+ The <bdd> viewer provides the ability to story-test the functionality
+ in your domain objects, using a behaviour-driven design (BDD)
+ framework.
+ 
+ Currently the only framework supported is {{{http://concordion.org}Concordion}},
+ though we expect others to be supported in the future.
+  
+Alternatives
+
+ The {{{../junit/index.html}JUnit}} viewer can also be used for testing.
+ However, with the junit viewer the actual test is written in {{{http://junit.org}JUnit}}
+ (rather than XHTML as is the case for Concordion) and so is closer to a 
+ developer test than a story test.
+
+A note on licenses
+
+  The <bdd> viewer itself is licensed under Apache License v2.  However, the
+  Concordion integration (naturally enough) depends upon {{{http://concordion.org}Concordion}},
+  which is licensed under Apache License v2 but in turn depends upon 
+  {{{http://xom.nu}Xom}}, which unfortunately has an LGPL license.  Apache projects
+  are {{{http://www.apache.org/legal/resolved.html#category-x}not allowed}} to have dependencies 
+  on LGPL projects.
+  
+  There is a workaround.  Isis' pom.xml files specifically exclude the XOM dependency, meaning
+  that they are compliant with Apache's licensing restrictions.  However, any application
+  code that uses the BDD viewer must explicitly add its own dependency to the XOM library.
+  You'll find that the pom.xml files generated by the 
+  {{{../../quick-start.html}quickstart archetype}} do indeed do this).
+   
+  If you are unhappy to introduce this dependency to LGPL in your own code, then you will
+  not be able to use the Concordion integration.

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/src/site/apt/jottings.apt
----------------------------------------------------------------------
diff --git a/mothballed/bdd/src/site/apt/jottings.apt b/mothballed/bdd/src/site/apt/jottings.apt
new file mode 100755
index 0000000..c5d1200
--- /dev/null
+++ b/mothballed/bdd/src/site/apt/jottings.apt
@@ -0,0 +1,24 @@
+~~  Licensed to the Apache Software Foundation (ASF) under one
+~~  or more contributor license agreements.  See the NOTICE file
+~~  distributed with this work for additional information
+~~  regarding copyright ownership.  The ASF licenses this file
+~~  to you under the Apache License, Version 2.0 (the
+~~  "License"); you may not use this file except in compliance
+~~  with the License.  You may obtain a copy of the License at
+~~
+~~        http://www.apache.org/licenses/LICENSE-2.0
+~~
+~~  Unless required by applicable law or agreed to in writing,
+~~  software distributed under the License is distributed on an
+~~  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+~~  KIND, either express or implied.  See the License for the
+~~  specific language governing permissions and limitations
+~~  under the License.
+
+
+
+Jottings
+ 
+  This page is to capture any random jottings relating to this module prior 
+  to being moved into formal documentation. 
+ 

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/src/site/resources/dtd/xhtml-lat1.ent
----------------------------------------------------------------------
diff --git a/mothballed/bdd/src/site/resources/dtd/xhtml-lat1.ent b/mothballed/bdd/src/site/resources/dtd/xhtml-lat1.ent
new file mode 100644
index 0000000..ffee223
--- /dev/null
+++ b/mothballed/bdd/src/site/resources/dtd/xhtml-lat1.ent
@@ -0,0 +1,196 @@
+<!-- Portions (C) International Organization for Standardization 1986
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+-->
+<!-- Character entity set. Typical invocation:
+    <!ENTITY % HTMLlat1 PUBLIC
+       "-//W3C//ENTITIES Latin 1 for XHTML//EN"
+       "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent">
+    %HTMLlat1;
+-->
+
+<!ENTITY nbsp   "&#160;"> <!-- no-break space = non-breaking space,
+                                  U+00A0 ISOnum -->
+<!ENTITY iexcl  "&#161;"> <!-- inverted exclamation mark, U+00A1 ISOnum -->
+<!ENTITY cent   "&#162;"> <!-- cent sign, U+00A2 ISOnum -->
+<!ENTITY pound  "&#163;"> <!-- pound sign, U+00A3 ISOnum -->
+<!ENTITY curren "&#164;"> <!-- currency sign, U+00A4 ISOnum -->
+<!ENTITY yen    "&#165;"> <!-- yen sign = yuan sign, U+00A5 ISOnum -->
+<!ENTITY brvbar "&#166;"> <!-- broken bar = broken vertical bar,
+                                  U+00A6 ISOnum -->
+<!ENTITY sect   "&#167;"> <!-- section sign, U+00A7 ISOnum -->
+<!ENTITY uml    "&#168;"> <!-- diaeresis = spacing diaeresis,
+                                  U+00A8 ISOdia -->
+<!ENTITY copy   "&#169;"> <!-- copyright sign, U+00A9 ISOnum -->
+<!ENTITY ordf   "&#170;"> <!-- feminine ordinal indicator, U+00AA ISOnum -->
+<!ENTITY laquo  "&#171;"> <!-- left-pointing double angle quotation mark
+                                  = left pointing guillemet, U+00AB ISOnum -->
+<!ENTITY not    "&#172;"> <!-- not sign = angled dash,
+                                  U+00AC ISOnum -->
+<!ENTITY shy    "&#173;"> <!-- soft hyphen = discretionary hyphen,
+                                  U+00AD ISOnum -->
+<!ENTITY reg    "&#174;"> <!-- registered sign = registered trade mark sign,
+                                  U+00AE ISOnum -->
+<!ENTITY macr   "&#175;"> <!-- macron = spacing macron = overline
+                                  = APL overbar, U+00AF ISOdia -->
+<!ENTITY deg    "&#176;"> <!-- degree sign, U+00B0 ISOnum -->
+<!ENTITY plusmn "&#177;"> <!-- plus-minus sign = plus-or-minus sign,
+                                  U+00B1 ISOnum -->
+<!ENTITY sup2   "&#178;"> <!-- superscript two = superscript digit two
+                                  = squared, U+00B2 ISOnum -->
+<!ENTITY sup3   "&#179;"> <!-- superscript three = superscript digit three
+                                  = cubed, U+00B3 ISOnum -->
+<!ENTITY acute  "&#180;"> <!-- acute accent = spacing acute,
+                                  U+00B4 ISOdia -->
+<!ENTITY micro  "&#181;"> <!-- micro sign, U+00B5 ISOnum -->
+<!ENTITY para   "&#182;"> <!-- pilcrow sign = paragraph sign,
+                                  U+00B6 ISOnum -->
+<!ENTITY middot "&#183;"> <!-- middle dot = Georgian comma
+                                  = Greek middle dot, U+00B7 ISOnum -->
+<!ENTITY cedil  "&#184;"> <!-- cedilla = spacing cedilla, U+00B8 ISOdia -->
+<!ENTITY sup1   "&#185;"> <!-- superscript one = superscript digit one,
+                                  U+00B9 ISOnum -->
+<!ENTITY ordm   "&#186;"> <!-- masculine ordinal indicator,
+                                  U+00BA ISOnum -->
+<!ENTITY raquo  "&#187;"> <!-- right-pointing double angle quotation mark
+                                  = right pointing guillemet, U+00BB ISOnum -->
+<!ENTITY frac14 "&#188;"> <!-- vulgar fraction one quarter
+                                  = fraction one quarter, U+00BC ISOnum -->
+<!ENTITY frac12 "&#189;"> <!-- vulgar fraction one half
+                                  = fraction one half, U+00BD ISOnum -->
+<!ENTITY frac34 "&#190;"> <!-- vulgar fraction three quarters
+                                  = fraction three quarters, U+00BE ISOnum -->
+<!ENTITY iquest "&#191;"> <!-- inverted question mark
+                                  = turned question mark, U+00BF ISOnum -->
+<!ENTITY Agrave "&#192;"> <!-- latin capital letter A with grave
+                                  = latin capital letter A grave,
+                                  U+00C0 ISOlat1 -->
+<!ENTITY Aacute "&#193;"> <!-- latin capital letter A with acute,
+                                  U+00C1 ISOlat1 -->
+<!ENTITY Acirc  "&#194;"> <!-- latin capital letter A with circumflex,
+                                  U+00C2 ISOlat1 -->
+<!ENTITY Atilde "&#195;"> <!-- latin capital letter A with tilde,
+                                  U+00C3 ISOlat1 -->
+<!ENTITY Auml   "&#196;"> <!-- latin capital letter A with diaeresis,
+                                  U+00C4 ISOlat1 -->
+<!ENTITY Aring  "&#197;"> <!-- latin capital letter A with ring above
+                                  = latin capital letter A ring,
+                                  U+00C5 ISOlat1 -->
+<!ENTITY AElig  "&#198;"> <!-- latin capital letter AE
+                                  = latin capital ligature AE,
+                                  U+00C6 ISOlat1 -->
+<!ENTITY Ccedil "&#199;"> <!-- latin capital letter C with cedilla,
+                                  U+00C7 ISOlat1 -->
+<!ENTITY Egrave "&#200;"> <!-- latin capital letter E with grave,
+                                  U+00C8 ISOlat1 -->
+<!ENTITY Eacute "&#201;"> <!-- latin capital letter E with acute,
+                                  U+00C9 ISOlat1 -->
+<!ENTITY Ecirc  "&#202;"> <!-- latin capital letter E with circumflex,
+                                  U+00CA ISOlat1 -->
+<!ENTITY Euml   "&#203;"> <!-- latin capital letter E with diaeresis,
+                                  U+00CB ISOlat1 -->
+<!ENTITY Igrave "&#204;"> <!-- latin capital letter I with grave,
+                                  U+00CC ISOlat1 -->
+<!ENTITY Iacute "&#205;"> <!-- latin capital letter I with acute,
+                                  U+00CD ISOlat1 -->
+<!ENTITY Icirc  "&#206;"> <!-- latin capital letter I with circumflex,
+                                  U+00CE ISOlat1 -->
+<!ENTITY Iuml   "&#207;"> <!-- latin capital letter I with diaeresis,
+                                  U+00CF ISOlat1 -->
+<!ENTITY ETH    "&#208;"> <!-- latin capital letter ETH, U+00D0 ISOlat1 -->
+<!ENTITY Ntilde "&#209;"> <!-- latin capital letter N with tilde,
+                                  U+00D1 ISOlat1 -->
+<!ENTITY Ograve "&#210;"> <!-- latin capital letter O with grave,
+                                  U+00D2 ISOlat1 -->
+<!ENTITY Oacute "&#211;"> <!-- latin capital letter O with acute,
+                                  U+00D3 ISOlat1 -->
+<!ENTITY Ocirc  "&#212;"> <!-- latin capital letter O with circumflex,
+                                  U+00D4 ISOlat1 -->
+<!ENTITY Otilde "&#213;"> <!-- latin capital letter O with tilde,
+                                  U+00D5 ISOlat1 -->
+<!ENTITY Ouml   "&#214;"> <!-- latin capital letter O with diaeresis,
+                                  U+00D6 ISOlat1 -->
+<!ENTITY times  "&#215;"> <!-- multiplication sign, U+00D7 ISOnum -->
+<!ENTITY Oslash "&#216;"> <!-- latin capital letter O with stroke
+                                  = latin capital letter O slash,
+                                  U+00D8 ISOlat1 -->
+<!ENTITY Ugrave "&#217;"> <!-- latin capital letter U with grave,
+                                  U+00D9 ISOlat1 -->
+<!ENTITY Uacute "&#218;"> <!-- latin capital letter U with acute,
+                                  U+00DA ISOlat1 -->
+<!ENTITY Ucirc  "&#219;"> <!-- latin capital letter U with circumflex,
+                                  U+00DB ISOlat1 -->
+<!ENTITY Uuml   "&#220;"> <!-- latin capital letter U with diaeresis,
+                                  U+00DC ISOlat1 -->
+<!ENTITY Yacute "&#221;"> <!-- latin capital letter Y with acute,
+                                  U+00DD ISOlat1 -->
+<!ENTITY THORN  "&#222;"> <!-- latin capital letter THORN,
+                                  U+00DE ISOlat1 -->
+<!ENTITY szlig  "&#223;"> <!-- latin small letter sharp s = ess-zed,
+                                  U+00DF ISOlat1 -->
+<!ENTITY agrave "&#224;"> <!-- latin small letter a with grave
+                                  = latin small letter a grave,
+                                  U+00E0 ISOlat1 -->
+<!ENTITY aacute "&#225;"> <!-- latin small letter a with acute,
+                                  U+00E1 ISOlat1 -->
+<!ENTITY acirc  "&#226;"> <!-- latin small letter a with circumflex,
+                                  U+00E2 ISOlat1 -->
+<!ENTITY atilde "&#227;"> <!-- latin small letter a with tilde,
+                                  U+00E3 ISOlat1 -->
+<!ENTITY auml   "&#228;"> <!-- latin small letter a with diaeresis,
+                                  U+00E4 ISOlat1 -->
+<!ENTITY aring  "&#229;"> <!-- latin small letter a with ring above
+                                  = latin small letter a ring,
+                                  U+00E5 ISOlat1 -->
+<!ENTITY aelig  "&#230;"> <!-- latin small letter ae
+                                  = latin small ligature ae, U+00E6 ISOlat1 -->
+<!ENTITY ccedil "&#231;"> <!-- latin small letter c with cedilla,
+                                  U+00E7 ISOlat1 -->
+<!ENTITY egrave "&#232;"> <!-- latin small letter e with grave,
+                                  U+00E8 ISOlat1 -->
+<!ENTITY eacute "&#233;"> <!-- latin small letter e with acute,
+                                  U+00E9 ISOlat1 -->
+<!ENTITY ecirc  "&#234;"> <!-- latin small letter e with circumflex,
+                                  U+00EA ISOlat1 -->
+<!ENTITY euml   "&#235;"> <!-- latin small letter e with diaeresis,
+                                  U+00EB ISOlat1 -->
+<!ENTITY igrave "&#236;"> <!-- latin small letter i with grave,
+                                  U+00EC ISOlat1 -->
+<!ENTITY iacute "&#237;"> <!-- latin small letter i with acute,
+                                  U+00ED ISOlat1 -->
+<!ENTITY icirc  "&#238;"> <!-- latin small letter i with circumflex,
+                                  U+00EE ISOlat1 -->
+<!ENTITY iuml   "&#239;"> <!-- latin small letter i with diaeresis,
+                                  U+00EF ISOlat1 -->
+<!ENTITY eth    "&#240;"> <!-- latin small letter eth, U+00F0 ISOlat1 -->
+<!ENTITY ntilde "&#241;"> <!-- latin small letter n with tilde,
+                                  U+00F1 ISOlat1 -->
+<!ENTITY ograve "&#242;"> <!-- latin small letter o with grave,
+                                  U+00F2 ISOlat1 -->
+<!ENTITY oacute "&#243;"> <!-- latin small letter o with acute,
+                                  U+00F3 ISOlat1 -->
+<!ENTITY ocirc  "&#244;"> <!-- latin small letter o with circumflex,
+                                  U+00F4 ISOlat1 -->
+<!ENTITY otilde "&#245;"> <!-- latin small letter o with tilde,
+                                  U+00F5 ISOlat1 -->
+<!ENTITY ouml   "&#246;"> <!-- latin small letter o with diaeresis,
+                                  U+00F6 ISOlat1 -->
+<!ENTITY divide "&#247;"> <!-- division sign, U+00F7 ISOnum -->
+<!ENTITY oslash "&#248;"> <!-- latin small letter o with stroke,
+                                  = latin small letter o slash,
+                                  U+00F8 ISOlat1 -->
+<!ENTITY ugrave "&#249;"> <!-- latin small letter u with grave,
+                                  U+00F9 ISOlat1 -->
+<!ENTITY uacute "&#250;"> <!-- latin small letter u with acute,
+                                  U+00FA ISOlat1 -->
+<!ENTITY ucirc  "&#251;"> <!-- latin small letter u with circumflex,
+                                  U+00FB ISOlat1 -->
+<!ENTITY uuml   "&#252;"> <!-- latin small letter u with diaeresis,
+                                  U+00FC ISOlat1 -->
+<!ENTITY yacute "&#253;"> <!-- latin small letter y with acute,
+                                  U+00FD ISOlat1 -->
+<!ENTITY thorn  "&#254;"> <!-- latin small letter thorn,
+                                  U+00FE ISOlat1 -->
+<!ENTITY yuml   "&#255;"> <!-- latin small letter y with diaeresis,
+                                  U+00FF ISOlat1 -->

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/src/site/resources/dtd/xhtml-special.ent
----------------------------------------------------------------------
diff --git a/mothballed/bdd/src/site/resources/dtd/xhtml-special.ent b/mothballed/bdd/src/site/resources/dtd/xhtml-special.ent
new file mode 100644
index 0000000..ca358b2
--- /dev/null
+++ b/mothballed/bdd/src/site/resources/dtd/xhtml-special.ent
@@ -0,0 +1,80 @@
+<!-- Special characters for XHTML -->
+
+<!-- Character entity set. Typical invocation:
+     <!ENTITY % HTMLspecial PUBLIC
+        "-//W3C//ENTITIES Special for XHTML//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent">
+     %HTMLspecial;
+-->
+
+<!-- Portions (C) International Organization for Standardization 1986:
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+-->
+
+<!-- Relevant ISO entity set is given unless names are newly introduced.
+     New names (i.e., not in ISO 8879 list) do not clash with any
+     existing ISO 8879 entity names. ISO 10646 character numbers
+     are given for each character, in hex. values are decimal
+     conversions of the ISO 10646 values and refer to the document
+     character set. Names are Unicode names. 
+-->
+
+<!-- C0 Controls and Basic Latin -->
+<!ENTITY quot    "&#34;"> <!--  quotation mark, U+0022 ISOnum -->
+<!ENTITY amp     "&#38;#38;"> <!--  ampersand, U+0026 ISOnum -->
+<!ENTITY lt      "&#38;#60;"> <!--  less-than sign, U+003C ISOnum -->
+<!ENTITY gt      "&#62;"> <!--  greater-than sign, U+003E ISOnum -->
+<!ENTITY apos	 "&#39;"> <!--  apostrophe = APL quote, U+0027 ISOnum -->
+
+<!-- Latin Extended-A -->
+<!ENTITY OElig   "&#338;"> <!--  latin capital ligature OE,
+                                    U+0152 ISOlat2 -->
+<!ENTITY oelig   "&#339;"> <!--  latin small ligature oe, U+0153 ISOlat2 -->
+<!-- ligature is a misnomer, this is a separate character in some languages -->
+<!ENTITY Scaron  "&#352;"> <!--  latin capital letter S with caron,
+                                    U+0160 ISOlat2 -->
+<!ENTITY scaron  "&#353;"> <!--  latin small letter s with caron,
+                                    U+0161 ISOlat2 -->
+<!ENTITY Yuml    "&#376;"> <!--  latin capital letter Y with diaeresis,
+                                    U+0178 ISOlat2 -->
+
+<!-- Spacing Modifier Letters -->
+<!ENTITY circ    "&#710;"> <!--  modifier letter circumflex accent,
+                                    U+02C6 ISOpub -->
+<!ENTITY tilde   "&#732;"> <!--  small tilde, U+02DC ISOdia -->
+
+<!-- General Punctuation -->
+<!ENTITY ensp    "&#8194;"> <!-- en space, U+2002 ISOpub -->
+<!ENTITY emsp    "&#8195;"> <!-- em space, U+2003 ISOpub -->
+<!ENTITY thinsp  "&#8201;"> <!-- thin space, U+2009 ISOpub -->
+<!ENTITY zwnj    "&#8204;"> <!-- zero width non-joiner,
+                                    U+200C NEW RFC 2070 -->
+<!ENTITY zwj     "&#8205;"> <!-- zero width joiner, U+200D NEW RFC 2070 -->
+<!ENTITY lrm     "&#8206;"> <!-- left-to-right mark, U+200E NEW RFC 2070 -->
+<!ENTITY rlm     "&#8207;"> <!-- right-to-left mark, U+200F NEW RFC 2070 -->
+<!ENTITY ndash   "&#8211;"> <!-- en dash, U+2013 ISOpub -->
+<!ENTITY mdash   "&#8212;"> <!-- em dash, U+2014 ISOpub -->
+<!ENTITY lsquo   "&#8216;"> <!-- left single quotation mark,
+                                    U+2018 ISOnum -->
+<!ENTITY rsquo   "&#8217;"> <!-- right single quotation mark,
+                                    U+2019 ISOnum -->
+<!ENTITY sbquo   "&#8218;"> <!-- single low-9 quotation mark, U+201A NEW -->
+<!ENTITY ldquo   "&#8220;"> <!-- left double quotation mark,
+                                    U+201C ISOnum -->
+<!ENTITY rdquo   "&#8221;"> <!-- right double quotation mark,
+                                    U+201D ISOnum -->
+<!ENTITY bdquo   "&#8222;"> <!-- double low-9 quotation mark, U+201E NEW -->
+<!ENTITY dagger  "&#8224;"> <!-- dagger, U+2020 ISOpub -->
+<!ENTITY Dagger  "&#8225;"> <!-- double dagger, U+2021 ISOpub -->
+<!ENTITY permil  "&#8240;"> <!-- per mille sign, U+2030 ISOtech -->
+<!ENTITY lsaquo  "&#8249;"> <!-- single left-pointing angle quotation mark,
+                                    U+2039 ISO proposed -->
+<!-- lsaquo is proposed but not yet ISO standardized -->
+<!ENTITY rsaquo  "&#8250;"> <!-- single right-pointing angle quotation mark,
+                                    U+203A ISO proposed -->
+<!-- rsaquo is proposed but not yet ISO standardized -->
+
+<!-- Currency Symbols -->
+<!ENTITY euro   "&#8364;"> <!--  euro sign, U+20AC NEW -->

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/src/site/resources/dtd/xhtml-symbol.ent
----------------------------------------------------------------------
diff --git a/mothballed/bdd/src/site/resources/dtd/xhtml-symbol.ent b/mothballed/bdd/src/site/resources/dtd/xhtml-symbol.ent
new file mode 100644
index 0000000..63c2abf
--- /dev/null
+++ b/mothballed/bdd/src/site/resources/dtd/xhtml-symbol.ent
@@ -0,0 +1,237 @@
+<!-- Mathematical, Greek and Symbolic characters for XHTML -->
+
+<!-- Character entity set. Typical invocation:
+     <!ENTITY % HTMLsymbol PUBLIC
+        "-//W3C//ENTITIES Symbols for XHTML//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent">
+     %HTMLsymbol;
+-->
+
+<!-- Portions (C) International Organization for Standardization 1986:
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+-->
+
+<!-- Relevant ISO entity set is given unless names are newly introduced.
+     New names (i.e., not in ISO 8879 list) do not clash with any
+     existing ISO 8879 entity names. ISO 10646 character numbers
+     are given for each character, in hex. values are decimal
+     conversions of the ISO 10646 values and refer to the document
+     character set. Names are Unicode names. 
+-->
+
+<!-- Latin Extended-B -->
+<!ENTITY fnof     "&#402;"> <!-- latin small letter f with hook = function
+                                    = florin, U+0192 ISOtech -->
+
+<!-- Greek -->
+<!ENTITY Alpha    "&#913;"> <!-- greek capital letter alpha, U+0391 -->
+<!ENTITY Beta     "&#914;"> <!-- greek capital letter beta, U+0392 -->
+<!ENTITY Gamma    "&#915;"> <!-- greek capital letter gamma,
+                                    U+0393 ISOgrk3 -->
+<!ENTITY Delta    "&#916;"> <!-- greek capital letter delta,
+                                    U+0394 ISOgrk3 -->
+<!ENTITY Epsilon  "&#917;"> <!-- greek capital letter epsilon, U+0395 -->
+<!ENTITY Zeta     "&#918;"> <!-- greek capital letter zeta, U+0396 -->
+<!ENTITY Eta      "&#919;"> <!-- greek capital letter eta, U+0397 -->
+<!ENTITY Theta    "&#920;"> <!-- greek capital letter theta,
+                                    U+0398 ISOgrk3 -->
+<!ENTITY Iota     "&#921;"> <!-- greek capital letter iota, U+0399 -->
+<!ENTITY Kappa    "&#922;"> <!-- greek capital letter kappa, U+039A -->
+<!ENTITY Lambda   "&#923;"> <!-- greek capital letter lamda,
+                                    U+039B ISOgrk3 -->
+<!ENTITY Mu       "&#924;"> <!-- greek capital letter mu, U+039C -->
+<!ENTITY Nu       "&#925;"> <!-- greek capital letter nu, U+039D -->
+<!ENTITY Xi       "&#926;"> <!-- greek capital letter xi, U+039E ISOgrk3 -->
+<!ENTITY Omicron  "&#927;"> <!-- greek capital letter omicron, U+039F -->
+<!ENTITY Pi       "&#928;"> <!-- greek capital letter pi, U+03A0 ISOgrk3 -->
+<!ENTITY Rho      "&#929;"> <!-- greek capital letter rho, U+03A1 -->
+<!-- there is no Sigmaf, and no U+03A2 character either -->
+<!ENTITY Sigma    "&#931;"> <!-- greek capital letter sigma,
+                                    U+03A3 ISOgrk3 -->
+<!ENTITY Tau      "&#932;"> <!-- greek capital letter tau, U+03A4 -->
+<!ENTITY Upsilon  "&#933;"> <!-- greek capital letter upsilon,
+                                    U+03A5 ISOgrk3 -->
+<!ENTITY Phi      "&#934;"> <!-- greek capital letter phi,
+                                    U+03A6 ISOgrk3 -->
+<!ENTITY Chi      "&#935;"> <!-- greek capital letter chi, U+03A7 -->
+<!ENTITY Psi      "&#936;"> <!-- greek capital letter psi,
+                                    U+03A8 ISOgrk3 -->
+<!ENTITY Omega    "&#937;"> <!-- greek capital letter omega,
+                                    U+03A9 ISOgrk3 -->
+
+<!ENTITY alpha    "&#945;"> <!-- greek small letter alpha,
+                                    U+03B1 ISOgrk3 -->
+<!ENTITY beta     "&#946;"> <!-- greek small letter beta, U+03B2 ISOgrk3 -->
+<!ENTITY gamma    "&#947;"> <!-- greek small letter gamma,
+                                    U+03B3 ISOgrk3 -->
+<!ENTITY delta    "&#948;"> <!-- greek small letter delta,
+                                    U+03B4 ISOgrk3 -->
+<!ENTITY epsilon  "&#949;"> <!-- greek small letter epsilon,
+                                    U+03B5 ISOgrk3 -->
+<!ENTITY zeta     "&#950;"> <!-- greek small letter zeta, U+03B6 ISOgrk3 -->
+<!ENTITY eta      "&#951;"> <!-- greek small letter eta, U+03B7 ISOgrk3 -->
+<!ENTITY theta    "&#952;"> <!-- greek small letter theta,
+                                    U+03B8 ISOgrk3 -->
+<!ENTITY iota     "&#953;"> <!-- greek small letter iota, U+03B9 ISOgrk3 -->
+<!ENTITY kappa    "&#954;"> <!-- greek small letter kappa,
+                                    U+03BA ISOgrk3 -->
+<!ENTITY lambda   "&#955;"> <!-- greek small letter lamda,
+                                    U+03BB ISOgrk3 -->
+<!ENTITY mu       "&#956;"> <!-- greek small letter mu, U+03BC ISOgrk3 -->
+<!ENTITY nu       "&#957;"> <!-- greek small letter nu, U+03BD ISOgrk3 -->
+<!ENTITY xi       "&#958;"> <!-- greek small letter xi, U+03BE ISOgrk3 -->
+<!ENTITY omicron  "&#959;"> <!-- greek small letter omicron, U+03BF NEW -->
+<!ENTITY pi       "&#960;"> <!-- greek small letter pi, U+03C0 ISOgrk3 -->
+<!ENTITY rho      "&#961;"> <!-- greek small letter rho, U+03C1 ISOgrk3 -->
+<!ENTITY sigmaf   "&#962;"> <!-- greek small letter final sigma,
+                                    U+03C2 ISOgrk3 -->
+<!ENTITY sigma    "&#963;"> <!-- greek small letter sigma,
+                                    U+03C3 ISOgrk3 -->
+<!ENTITY tau      "&#964;"> <!-- greek small letter tau, U+03C4 ISOgrk3 -->
+<!ENTITY upsilon  "&#965;"> <!-- greek small letter upsilon,
+                                    U+03C5 ISOgrk3 -->
+<!ENTITY phi      "&#966;"> <!-- greek small letter phi, U+03C6 ISOgrk3 -->
+<!ENTITY chi      "&#967;"> <!-- greek small letter chi, U+03C7 ISOgrk3 -->
+<!ENTITY psi      "&#968;"> <!-- greek small letter psi, U+03C8 ISOgrk3 -->
+<!ENTITY omega    "&#969;"> <!-- greek small letter omega,
+                                    U+03C9 ISOgrk3 -->
+<!ENTITY thetasym "&#977;"> <!-- greek theta symbol,
+                                    U+03D1 NEW -->
+<!ENTITY upsih    "&#978;"> <!-- greek upsilon with hook symbol,
+                                    U+03D2 NEW -->
+<!ENTITY piv      "&#982;"> <!-- greek pi symbol, U+03D6 ISOgrk3 -->
+
+<!-- General Punctuation -->
+<!ENTITY bull     "&#8226;"> <!-- bullet = black small circle,
+                                     U+2022 ISOpub  -->
+<!-- bullet is NOT the same as bullet operator, U+2219 -->
+<!ENTITY hellip   "&#8230;"> <!-- horizontal ellipsis = three dot leader,
+                                     U+2026 ISOpub  -->
+<!ENTITY prime    "&#8242;"> <!-- prime = minutes = feet, U+2032 ISOtech -->
+<!ENTITY Prime    "&#8243;"> <!-- double prime = seconds = inches,
+                                     U+2033 ISOtech -->
+<!ENTITY oline    "&#8254;"> <!-- overline = spacing overscore,
+                                     U+203E NEW -->
+<!ENTITY frasl    "&#8260;"> <!-- fraction slash, U+2044 NEW -->
+
+<!-- Letterlike Symbols -->
+<!ENTITY weierp   "&#8472;"> <!-- script capital P = power set
+                                     = Weierstrass p, U+2118 ISOamso -->
+<!ENTITY image    "&#8465;"> <!-- black-letter capital I = imaginary part,
+                                     U+2111 ISOamso -->
+<!ENTITY real     "&#8476;"> <!-- black-letter capital R = real part symbol,
+                                     U+211C ISOamso -->
+<!ENTITY trade    "&#8482;"> <!-- trade mark sign, U+2122 ISOnum -->
+<!ENTITY alefsym  "&#8501;"> <!-- alef symbol = first transfinite cardinal,
+                                     U+2135 NEW -->
+<!-- alef symbol is NOT the same as hebrew letter alef,
+     U+05D0 although the same glyph could be used to depict both characters -->
+
+<!-- Arrows -->
+<!ENTITY larr     "&#8592;"> <!-- leftwards arrow, U+2190 ISOnum -->
+<!ENTITY uarr     "&#8593;"> <!-- upwards arrow, U+2191 ISOnum-->
+<!ENTITY rarr     "&#8594;"> <!-- rightwards arrow, U+2192 ISOnum -->
+<!ENTITY darr     "&#8595;"> <!-- downwards arrow, U+2193 ISOnum -->
+<!ENTITY harr     "&#8596;"> <!-- left right arrow, U+2194 ISOamsa -->
+<!ENTITY crarr    "&#8629;"> <!-- downwards arrow with corner leftwards
+                                     = carriage return, U+21B5 NEW -->
+<!ENTITY lArr     "&#8656;"> <!-- leftwards double arrow, U+21D0 ISOtech -->
+<!-- Unicode does not say that lArr is the same as the 'is implied by' arrow
+    but also does not have any other character for that function. So lArr can
+    be used for 'is implied by' as ISOtech suggests -->
+<!ENTITY uArr     "&#8657;"> <!-- upwards double arrow, U+21D1 ISOamsa -->
+<!ENTITY rArr     "&#8658;"> <!-- rightwards double arrow,
+                                     U+21D2 ISOtech -->
+<!-- Unicode does not say this is the 'implies' character but does not have 
+     another character with this function so rArr can be used for 'implies'
+     as ISOtech suggests -->
+<!ENTITY dArr     "&#8659;"> <!-- downwards double arrow, U+21D3 ISOamsa -->
+<!ENTITY hArr     "&#8660;"> <!-- left right double arrow,
+                                     U+21D4 ISOamsa -->
+
+<!-- Mathematical Operators -->
+<!ENTITY forall   "&#8704;"> <!-- for all, U+2200 ISOtech -->
+<!ENTITY part     "&#8706;"> <!-- partial differential, U+2202 ISOtech  -->
+<!ENTITY exist    "&#8707;"> <!-- there exists, U+2203 ISOtech -->
+<!ENTITY empty    "&#8709;"> <!-- empty set = null set, U+2205 ISOamso -->
+<!ENTITY nabla    "&#8711;"> <!-- nabla = backward difference,
+                                     U+2207 ISOtech -->
+<!ENTITY isin     "&#8712;"> <!-- element of, U+2208 ISOtech -->
+<!ENTITY notin    "&#8713;"> <!-- not an element of, U+2209 ISOtech -->
+<!ENTITY ni       "&#8715;"> <!-- contains as member, U+220B ISOtech -->
+<!ENTITY prod     "&#8719;"> <!-- n-ary product = product sign,
+                                     U+220F ISOamsb -->
+<!-- prod is NOT the same character as U+03A0 'greek capital letter pi' though
+     the same glyph might be used for both -->
+<!ENTITY sum      "&#8721;"> <!-- n-ary summation, U+2211 ISOamsb -->
+<!-- sum is NOT the same character as U+03A3 'greek capital letter sigma'
+     though the same glyph might be used for both -->
+<!ENTITY minus    "&#8722;"> <!-- minus sign, U+2212 ISOtech -->
+<!ENTITY lowast   "&#8727;"> <!-- asterisk operator, U+2217 ISOtech -->
+<!ENTITY radic    "&#8730;"> <!-- square root = radical sign,
+                                     U+221A ISOtech -->
+<!ENTITY prop     "&#8733;"> <!-- proportional to, U+221D ISOtech -->
+<!ENTITY infin    "&#8734;"> <!-- infinity, U+221E ISOtech -->
+<!ENTITY ang      "&#8736;"> <!-- angle, U+2220 ISOamso -->
+<!ENTITY and      "&#8743;"> <!-- logical and = wedge, U+2227 ISOtech -->
+<!ENTITY or       "&#8744;"> <!-- logical or = vee, U+2228 ISOtech -->
+<!ENTITY cap      "&#8745;"> <!-- intersection = cap, U+2229 ISOtech -->
+<!ENTITY cup      "&#8746;"> <!-- union = cup, U+222A ISOtech -->
+<!ENTITY int      "&#8747;"> <!-- integral, U+222B ISOtech -->
+<!ENTITY there4   "&#8756;"> <!-- therefore, U+2234 ISOtech -->
+<!ENTITY sim      "&#8764;"> <!-- tilde operator = varies with = similar to,
+                                     U+223C ISOtech -->
+<!-- tilde operator is NOT the same character as the tilde, U+007E,
+     although the same glyph might be used to represent both  -->
+<!ENTITY cong     "&#8773;"> <!-- approximately equal to, U+2245 ISOtech -->
+<!ENTITY asymp    "&#8776;"> <!-- almost equal to = asymptotic to,
+                                     U+2248 ISOamsr -->
+<!ENTITY ne       "&#8800;"> <!-- not equal to, U+2260 ISOtech -->
+<!ENTITY equiv    "&#8801;"> <!-- identical to, U+2261 ISOtech -->
+<!ENTITY le       "&#8804;"> <!-- less-than or equal to, U+2264 ISOtech -->
+<!ENTITY ge       "&#8805;"> <!-- greater-than or equal to,
+                                     U+2265 ISOtech -->
+<!ENTITY sub      "&#8834;"> <!-- subset of, U+2282 ISOtech -->
+<!ENTITY sup      "&#8835;"> <!-- superset of, U+2283 ISOtech -->
+<!ENTITY nsub     "&#8836;"> <!-- not a subset of, U+2284 ISOamsn -->
+<!ENTITY sube     "&#8838;"> <!-- subset of or equal to, U+2286 ISOtech -->
+<!ENTITY supe     "&#8839;"> <!-- superset of or equal to,
+                                     U+2287 ISOtech -->
+<!ENTITY oplus    "&#8853;"> <!-- circled plus = direct sum,
+                                     U+2295 ISOamsb -->
+<!ENTITY otimes   "&#8855;"> <!-- circled times = vector product,
+                                     U+2297 ISOamsb -->
+<!ENTITY perp     "&#8869;"> <!-- up tack = orthogonal to = perpendicular,
+                                     U+22A5 ISOtech -->
+<!ENTITY sdot     "&#8901;"> <!-- dot operator, U+22C5 ISOamsb -->
+<!-- dot operator is NOT the same character as U+00B7 middle dot -->
+
+<!-- Miscellaneous Technical -->
+<!ENTITY lceil    "&#8968;"> <!-- left ceiling = APL upstile,
+                                     U+2308 ISOamsc  -->
+<!ENTITY rceil    "&#8969;"> <!-- right ceiling, U+2309 ISOamsc  -->
+<!ENTITY lfloor   "&#8970;"> <!-- left floor = APL downstile,
+                                     U+230A ISOamsc  -->
+<!ENTITY rfloor   "&#8971;"> <!-- right floor, U+230B ISOamsc  -->
+<!ENTITY lang     "&#9001;"> <!-- left-pointing angle bracket = bra,
+                                     U+2329 ISOtech -->
+<!-- lang is NOT the same character as U+003C 'less than sign' 
+     or U+2039 'single left-pointing angle quotation mark' -->
+<!ENTITY rang     "&#9002;"> <!-- right-pointing angle bracket = ket,
+                                     U+232A ISOtech -->
+<!-- rang is NOT the same character as U+003E 'greater than sign' 
+     or U+203A 'single right-pointing angle quotation mark' -->
+
+<!-- Geometric Shapes -->
+<!ENTITY loz      "&#9674;"> <!-- lozenge, U+25CA ISOpub -->
+
+<!-- Miscellaneous Symbols -->
+<!ENTITY spades   "&#9824;"> <!-- black spade suit, U+2660 ISOpub -->
+<!-- black here seems to mean filled as opposed to hollow -->
+<!ENTITY clubs    "&#9827;"> <!-- black club suit = shamrock,
+                                     U+2663 ISOpub -->
+<!ENTITY hearts   "&#9829;"> <!-- black heart suit = valentine,
+                                     U+2665 ISOpub -->
+<!ENTITY diams    "&#9830;"> <!-- black diamond suit, U+2666 ISOpub -->

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/src/site/resources/dtd/xhtml1-strict.dtd
----------------------------------------------------------------------
diff --git a/mothballed/bdd/src/site/resources/dtd/xhtml1-strict.dtd b/mothballed/bdd/src/site/resources/dtd/xhtml1-strict.dtd
new file mode 100644
index 0000000..d26726e
--- /dev/null
+++ b/mothballed/bdd/src/site/resources/dtd/xhtml1-strict.dtd
@@ -0,0 +1,988 @@
+<!--
+   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.24 $
+   $Date: 2002/07/31 19:34:51 $
+
+-->
+
+<!--================ 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
+  concordion:assertEquals  CDATA         #IMPLIED
+  concordion:set           CDATA         #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;
+  concordion:execute  CDATA         #IMPLIED
+  >
+
+<!--=================== 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
+  concordion:run  CDATA         #IMPLIED
+  >
+
+<!--===================== Inline Elements ================================-->
+
+<!ELEMENT span %Inline;> <!-- generic language/style container -->
+<!ATTLIST span
+  %attrs;
+  concordion:assertTrue  CDATA         #IMPLIED
+  concordion:assertFalse  CDATA         #IMPLIED
+  >
+
+<!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
+  isis:execute          CDATA    #IMPLIED
+  concordion:verifyRows CDATA    #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;
+  >
+

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/src/site/resources/xmlmind/xhtml.css
----------------------------------------------------------------------
diff --git a/mothballed/bdd/src/site/resources/xmlmind/xhtml.css b/mothballed/bdd/src/site/resources/xmlmind/xhtml.css
new file mode 100644
index 0000000..519df97
--- /dev/null
+++ b/mothballed/bdd/src/site/resources/xmlmind/xhtml.css
@@ -0,0 +1,692 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+/*
+ * Copyright (c) 2003-2010 Pixware. 
+ *
+ * This file is part of the XMLmind XML Editor project.
+ * For conditions of distribution and use, see the accompanying legal.txt file.
+ */
+
+@namespace "http://www.w3.org/1999/xhtml";
+@namespace html "http://www.w3.org/1999/xhtml";
+@namespace concordion "http://www.concordion.org/2007/concordion";
+@namespace isis "http://isis.apache.org/2010/concordion";
+
+@import "xhtml_table.imp";
+@import "xhtml_form.imp";
+
+/* ---------------------------------------------------------------------------
+   Concordion/Isis customization
+--------------------------------------------------------------------------- */
+
+*[concordion|set] {
+    background-color: #99CCCC;
+}
+*[concordion|execute] {
+    background-color: #CCFFCC;
+}
+*[isis|execute] {
+    background-color: #CCFFCC;
+}
+*[concordion|assertEquals] {
+    background-color: #66FF66;
+}
+*[concordion|assertTrue] {
+    background-color: #66FF66;
+}
+*[concordion|assertFalse] {
+    background-color: #66FF66;
+}
+*[concordion|verifyRows] {
+    background-color: #99FF99;
+}
+*[concordion|run] {
+    background-color: #FFFF66;
+}
+
+
+html {
+    display: block;
+}
+
+/* ---------------------------------------------------------------------------
+   Head
+--------------------------------------------------------------------------- */
+
+head {
+    display: block;
+    margin: 1.33ex 0;
+    border: 1px solid #CCFAFF;
+    background-color: #EEFAFF;
+    padding: 0.5em;
+    border-radius: 0.5em;
+}
+
+title { 
+    display: block;
+    text-align: center;
+    font-weight: bold;
+    font-size: 2em;
+    color: #206080;
+    margin-top: .67ex;
+    margin-bottom: .67ex;
+}
+
+base,
+meta,
+link,
+style,
+script,
+noscript {
+    display: tree;
+}
+
+/* ---------------------------------------------------------------------------
+   Body
+--------------------------------------------------------------------------- */
+
+body {
+    display: block;
+}
+
+/*
+ * Partial support for the Transitional DTD.
+ */
+body[bgcolor] {
+    background-color: concatenate(attr(bgcolor));
+}
+body[text] {
+    color: concatenate(attr(text));
+}
+
+/* ---------------------------------------------------------------------------
+   Blocks
+--------------------------------------------------------------------------- */
+
+div {
+    display: block;
+}
+
+/*
+ * Partial support for the Transitional DTD.
+ */
+center {
+    display: block;
+}
+div[align=center],
+center { 
+    margin-left: auto;
+    margin-right: auto;
+    text-align: center; 
+}
+div[align=right] { 
+    margin-left: auto;
+    margin-right: 0;
+    text-align: right; 
+}
+
+hr {
+    display: block;
+    content: icon(invisible) icon(invisible);
+    border: 2 inset gray;
+}
+
+/*
+ * Partial support for the Transitional DTD.
+ */
+hr[noshade] {
+    background-color: gray;
+    border-style: solid;
+}
+
+/* -------------------------------------
+   Headings
+------------------------------------- */
+
+h1, 
+h2, 
+h3, 
+h4, 
+h5,
+h6 {
+    display: block;
+    font-weight: bold;
+    color: #206080;
+}
+
+h1 { 
+    font-size: 1.5em;
+    margin-top: .83ex;
+    margin-bottom: .83ex;
+}
+
+h2 { 
+    font-size: 1.3em;
+    margin-top: 1ex;
+    margin-bottom: 1ex;
+}
+
+h3, 
+h4, 
+h5, 
+h6 { 
+    margin-top: 1.33ex;
+    margin-bottom: 1.33ex;
+}
+
+/*
+ * Partial support for the Transitional DTD.
+ */
+h1[align], 
+h2[align], 
+h3[align], 
+h4[align], 
+h5[align],
+h6[align] {
+    text-align: concatenate(attr(align)); 
+}
+
+/* -------------------------------------
+   Paragraphs
+------------------------------------- */
+
+address {
+    display: block;
+    font-style: italic; 
+    margin-top: 1.33ex 0;
+}
+
+p { 
+    display: block;
+    margin: 1.33ex 0;
+}
+
+/*
+ * Partial support for the Transitional DTD.
+ */
+p[align] {
+    text-align: concatenate(attr(align)); 
+}
+
+pre { 
+    display: block;
+    white-space: pre;
+    font-family: monospace;
+    background-color: #EEEEEE;
+    border: thin solid gray;
+    padding: 2px;
+    margin: 1.33ex 0;
+}
+
+blockquote {
+    display: block;
+    margin: 1.33ex 10ex;
+}
+
+/* -------------------------------------
+   Lists
+------------------------------------- */
+
+ul { 
+    display: block;
+    margin-left: 2ex;
+    margin-top: 1.33ex;
+    margin-bottom: 1.33ex;
+}
+
+li {
+    display: block;
+    margin-top: 1.33ex;
+    margin-bottom: 1.33ex;
+}
+
+/*
+ * Partial support for the Transitional DTD.
+ */
+ul[compact] > li,
+ol[compact] > li {
+    margin-top: 0;
+    margin-bottom: 0;
+}
+
+ul > li {
+    margin-left: 2.5ex;
+}
+ul > li:before {
+    display: marker;
+    content: disc;
+}
+ul > li ul > li:before {
+    content: square;
+}
+ul > li ul > li ul > li:before {
+    content: icon(diamond);
+}
+ul > li ul > li ul > li ul > li:before {
+    content: circle;
+}
+
+/*
+ * Partial support for the Transitional DTD.
+ */
+dir,
+menu { 
+    display: block;
+    margin-left: 2ex;
+    margin-top: 1.33ex;
+    margin-bottom: 1.33ex;
+}
+dir > li,
+menu > li {
+    margin-left: 2.5ex;
+}
+dir > li:before {
+    display: marker;
+    content: icon(right-half-disc);
+    color: #206080;
+}
+menu > li:before {
+    display: marker;
+    content: icon(right);
+    color: #206080;
+}
+
+ol { 
+    display: block;
+    margin-left: 2ex;
+    margin-top: 1.33ex;
+    margin-bottom: 1.33ex;
+}
+
+ol > li {
+    margin-left: 6ex;
+}
+ol > li:before {
+    display: marker;
+    content: simple-counter(n, decimal) ".";
+    font-weight: bold;
+}
+
+/* Example of value for style attribute: "list-style-type: lower-roman;" */
+ol[style*=lower-alpha] > li:before {
+    content: simple-counter(n, lower-alpha) ".";
+}
+ol[style*=upper-alpha] > li:before {
+    content: simple-counter(n, upper-alpha) ".";
+}
+ol[style*=lower-roman] > li:before {
+    content: simple-counter(n, lower-roman) ".";
+}
+ol[style*=upper-roman] > li:before {
+    content: simple-counter(n, upper-roman) ".";
+}
+
+/*
+ * Partial support for the Transitional DTD.
+ */
+ol[type=a] > li:before {
+    content: simple-counter(n, lower-alpha) ".";
+}
+ol[type=A] > li:before {
+    content: simple-counter(n, upper-alpha) ".";
+}
+ol[type=i] > li:before {
+    content: simple-counter(n, lower-roman) ".";
+}
+ol[type=I] > li:before {
+    content: simple-counter(n, upper-roman) ".";
+}
+
+ol ul, ul ol, ul ul, ol ol { 
+    margin-top: 0; 
+    margin-bottom: 0; 
+}
+
+dl {
+    display: block;
+    margin-left: 2ex;
+    margin-top: 1.33ex;
+    margin-bottom: 1.33ex;
+}
+
+dt {
+    display: block;
+    font-weight: bold; 
+}
+
+dd { 
+    display: block;
+    margin-left: 4ex;
+    margin-bottom: 1.33ex;
+}
+
+/*
+ * Partial support for the Transitional DTD.
+ */
+dl[compact] > dd {
+    margin-bottom: 0;
+}
+
+/* ---------------------------------------------------------------------------
+   Inlines
+
+   span
+   em strong cite dfn code samp kbd var abbr acronym
+   q
+   sub sup
+   br
+   tt i b 
+   big small
+   basefont font
+   strike s u
+   a
+--------------------------------------------------------------------------- */
+
+b, 
+strong { 
+    font-weight: bold; 
+}
+
+i, 
+em, 
+cite,
+var { 
+    font-style: italic; 
+}
+
+q:before {
+    content: open-quote;
+    font-weight: bold;
+    color: gray;
+}
+q:after {
+    content: close-quote;
+    font-weight: bold;
+    color: gray;
+}
+
+tt, 
+kbd, 
+code, 
+samp,
+var { 
+    font-family: monospace;
+}
+
+abbr, 
+acronym { 
+    font-weight: bold;
+}
+
+dfn {
+    background-color: #FFFFE0;
+}
+
+/*
+ * Clearly show that a span which has a class attribute is something special.
+ */
+span[class]:before {
+    content: icon(left-half-disc);
+    color: #C0C040;
+}
+span[class]:after {
+    content: icon(right-half-disc);
+    color: #C0C040;
+}
+
+sub, 
+sup {
+    display: inline-block;
+    white-space: nowrap;
+    font-size: small;
+}
+sub { 
+    vertical-align: sub;
+}
+sup { 
+    vertical-align: super;
+}
+
+/*
+ * Partial support for the Transitional DTD.
+ */
+strike,
+s {
+    text-decoration: line-through;
+}
+u { 
+    text-decoration: underline;
+}
+
+br:before { 
+    content: "\A"; 
+    color: gray;
+}
+
+big { 
+    font-size: large;
+}
+small { 
+    font-size: small;
+}
+
+/*
+ * Partial support for the Transitional DTD.
+ */
+basefont { 
+    content: "basefont=" attr(size);
+    font-size: small;
+    color: gray;
+}
+font[color] {
+    color: concatenate(attr(color));
+}
+font[face] {
+    font-family: concatenate(attr(face));
+}
+font[size="1"] {
+    font-size: x-small;
+}
+font[size="2"] {
+    font-size: small;
+}
+font[size="3"] {
+    font-size: medium;
+}
+font[size="4"] {
+    font-size: large;
+}
+font[size="5"] {
+    font-size: x-large;
+}
+font[size="6"],
+font[size="7"] {
+    font-size: xx-large;
+}
+font[size="-3"] {
+    font-size: smaller;
+}
+font[size="-2"] {
+    font-size: smaller;
+}
+font[size="-1"] {
+    font-size: smaller;
+}
+font[size="+1"] {
+    font-size: larger;
+}
+font[size="+2"] {
+    font-size: larger;
+}
+font[size="+3"] {
+    font-size: larger;
+}
+
+a[href] { 
+    color: navy;
+    text-decoration: underline;
+}
+a[name]:after,
+a[id]:after { 
+    content: icon(right-target); 
+    color: gray;
+    vertical-align: text-top;
+}
+
+a[href][class="drop_site"]:after {
+    content: " " drop-site(icon, icon(drop),
+                           command, "setImage", 
+                           parameter, "href anyURI - '%{value}'");
+    vertical-align: text-top;
+}
+
+/* ---------------------------------------------------------------------------
+   Ins/del
+  
+   When this is really needed, put the ins/del into a span 
+   to force inline display.
+--------------------------------------------------------------------------- */
+
+ins {
+    display: block;
+    border-width: 2px;
+    border-style: solid;
+    border-color: transparent blue transparent transparent;
+    padding-right: 5px;
+}
+
+p ins,
+pre ins,
+h1 ins, h2 ins, h3 ins, h4 ins, h5 ins, h6 ins,
+dt ins, 
+address ins,
+a ins,
+span ins,
+bdo ins,
+em ins, strong ins,
+dfn ins,
+code ins,
+samp ins,
+kbd ins,
+var ins,
+cite ins,
+abbr ins, acronym ins,
+q ins,
+sub ins, sup ins,
+tt ins, i ins, b ins,
+big ins, small ins {
+    display: inline;
+    text-decoration: underline;
+}
+
+del {
+    display: block;
+    color: gray;
+    border-width: 2px;
+    border-style: solid;
+    border-color: transparent gray transparent transparent;
+    padding-right: 5px;
+}
+
+p del,
+pre del,
+h1 del, h2 del, h3 del, h4 del, h5 del, h6 del,
+dt del, 
+address del,
+a del,
+span del,
+bdo del,
+em del, strong del,
+dfn del,
+code del,
+samp del,
+kbd del,
+var del,
+cite del,
+abbr del, acronym del,
+q del,
+sub del, sup del,
+tt del, i del, b del,
+big del, small del {
+    display: inline;
+    text-decoration: line-through;
+}
+
+/* ---------------------------------------------------------------------------
+   Objects
+--------------------------------------------------------------------------- */
+
+img {
+    display: inline;
+    content: image-viewport(attribute, src,
+			    data-type, anyURI,
+	                    content-width, attr(width),
+                            content-height, attr(height));
+}
+
+/*
+ * Partial support for the Transitional DTD.
+ */
+img[align=bottom],
+img[align=middle],
+img[align=top] {
+    vertical-align: concatenate(attr(align));
+}
+
+object,
+applet,
+param {
+    display: tree;
+}
+
+map,
+area {
+    display: tree;
+}
+
+/* ---------------------------------------------------------------------------
+   When printing
+--------------------------------------------------------------------------- */
+
+@media print {
+    * {
+	background-color: transparent;
+        line-height: 1.2;
+    }
+
+    base,
+    meta,
+    link,
+    style,
+    script,
+    noscript {
+	display: none;
+    }
+
+    meta[name=author][content],
+    meta[name=date][content] { 
+        display: block;
+	text-align: center;
+	/* 
+	 * Without paragraph(), a static text label is used 
+         * and words are not wrapped.
+	 */	
+        content: paragraph(attr(content));
+    }
+}


[07/19] ISIS-463: mothballing BDD viewer

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/GetActionParameterChoices.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/GetActionParameterChoices.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/GetActionParameterChoices.java
new file mode 100644
index 0000000..bf43aa1
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/GetActionParameterChoices.java
@@ -0,0 +1,66 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
+import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
+import org.apache.isis.viewer.bdd.common.CellBinding;
+import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
+import org.apache.isis.viewer.bdd.common.ScenarioCell;
+
+public class GetActionParameterChoices extends PerformAbstractTypeParams {
+
+    private ObjectAdapter result;
+
+    public GetActionParameterChoices(final Perform.Mode mode) {
+        super("get action parameter choices", Type.ACTION, NumParameters.ONE, mode);
+    }
+
+    @Override
+    public void doHandle(final PerformContext performContext) throws ScenarioBoundValueException {
+
+        final ObjectAdapter onAdapter = performContext.getOnAdapter();
+        final ObjectMember nakedObjectMember = performContext.getObjectMember();
+        final CellBinding arg0Binding = performContext.getPeer().getArg0Binding();
+        final ScenarioCell arg0Cell = arg0Binding.getCurrentCell();
+
+        int requestedParamNum = -1;
+        try {
+            requestedParamNum = Integer.valueOf(arg0Cell.getText());
+        } catch (final NumberFormatException ex) {
+            throw ScenarioBoundValueException.current(arg0Binding, ex.getMessage());
+        }
+
+        final ObjectAction noa = (ObjectAction) nakedObjectMember;
+        final int parameterCount = noa.getParameterCount();
+        if (requestedParamNum < 0 || requestedParamNum > parameterCount - 1) {
+            throw ScenarioBoundValueException.current(arg0Binding, "(must be between 0 and " + (parameterCount - 1) + ")");
+        }
+
+        final ObjectAdapter[][] allParameterChoices = noa.getChoices(onAdapter);
+        result = performContext.getPeer().toAdaptedListOfPojos(allParameterChoices[requestedParamNum]);
+    }
+
+    @Override
+    public ObjectAdapter getResult() {
+        return result;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/GetActionParameterDefault.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/GetActionParameterDefault.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/GetActionParameterDefault.java
new file mode 100644
index 0000000..f440d1b
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/GetActionParameterDefault.java
@@ -0,0 +1,65 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
+import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
+import org.apache.isis.viewer.bdd.common.CellBinding;
+import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
+import org.apache.isis.viewer.bdd.common.ScenarioCell;
+
+public class GetActionParameterDefault extends PerformAbstractTypeParams {
+
+    private ObjectAdapter result;
+
+    public GetActionParameterDefault(final Perform.Mode mode) {
+        super("get action parameter default", Type.ACTION, NumParameters.ONE, mode);
+    }
+
+    @Override
+    public void doHandle(final PerformContext performContext) throws ScenarioBoundValueException {
+
+        final ObjectAdapter onAdapter = performContext.getOnAdapter();
+        final ObjectMember nakedObjectMember = performContext.getObjectMember();
+        final CellBinding arg0Binding = performContext.getPeer().getArg0Binding();
+        final ScenarioCell arg0Cell = arg0Binding.getCurrentCell();
+        int requestedParamNum = -1;
+        try {
+            requestedParamNum = Integer.valueOf(arg0Cell.getText());
+        } catch (final NumberFormatException ex) {
+            throw ScenarioBoundValueException.current(arg0Binding, ex.getMessage());
+        }
+
+        final ObjectAction noa = (ObjectAction) nakedObjectMember;
+        final int parameterCount = noa.getParameterCount();
+        if (requestedParamNum < 0 || requestedParamNum > parameterCount - 1) {
+            throw ScenarioBoundValueException.current(arg0Binding, "(must be between 0 and " + (parameterCount - 1) + ")");
+        }
+
+        final ObjectAdapter[] defaults = noa.getDefaults(onAdapter);
+        result = defaults[requestedParamNum];
+    }
+
+    @Override
+    public ObjectAdapter getResult() {
+        return result;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/GetCollection.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/GetCollection.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/GetCollection.java
new file mode 100644
index 0000000..47a8282
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/GetCollection.java
@@ -0,0 +1,49 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
+import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
+
+public class GetCollection extends PerformAbstractTypeParams {
+
+    private ObjectAdapter result;
+
+    public GetCollection(final Perform.Mode mode) {
+        super("get collection", Type.COLLECTION, NumParameters.ZERO, mode);
+    }
+
+    @Override
+    public void doHandle(final PerformContext performContext) {
+
+        final ObjectAdapter onAdapter = performContext.getOnAdapter();
+        final ObjectMember nakedObjectMember = performContext.getObjectMember();
+
+        final OneToManyAssociation otma = (OneToManyAssociation) nakedObjectMember;
+
+        result = otma.get(onAdapter);
+    }
+
+    @Override
+    public ObjectAdapter getResult() {
+        return result;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/GetProperty.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/GetProperty.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/GetProperty.java
new file mode 100644
index 0000000..f0cc55e
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/GetProperty.java
@@ -0,0 +1,49 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
+import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
+
+public class GetProperty extends PerformAbstractTypeParams {
+
+    private ObjectAdapter result;
+
+    public GetProperty(final Perform.Mode mode) {
+        super("get property", Type.PROPERTY, NumParameters.ZERO, mode);
+    }
+
+    @Override
+    public void doHandle(final PerformContext performContext) {
+
+        final ObjectAdapter onAdapter = performContext.getOnAdapter();
+        final ObjectMember nakedObjectMember = performContext.getObjectMember();
+
+        final OneToOneAssociation otoa = (OneToOneAssociation) nakedObjectMember;
+
+        result = otoa.get(onAdapter);
+    }
+
+    @Override
+    public ObjectAdapter getResult() {
+        return result;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/GetPropertyChoices.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/GetPropertyChoices.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/GetPropertyChoices.java
new file mode 100644
index 0000000..e901ccc
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/GetPropertyChoices.java
@@ -0,0 +1,49 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
+import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
+
+public class GetPropertyChoices extends PerformAbstractTypeParams {
+
+    private ObjectAdapter result;
+
+    public GetPropertyChoices(final Perform.Mode mode) {
+        super("get property choices", Type.PROPERTY, NumParameters.ZERO, mode);
+    }
+
+    @Override
+    public void doHandle(final PerformContext performContext) {
+
+        final ObjectAdapter onAdapter = performContext.getOnAdapter();
+        final ObjectMember nakedObjectMember = performContext.getObjectMember();
+
+        final OneToOneAssociation otoa = (OneToOneAssociation) nakedObjectMember;
+
+        result = performContext.getPeer().toAdaptedListOfPojos(otoa.getChoices(onAdapter));
+    }
+
+    @Override
+    public ObjectAdapter getResult() {
+        return result;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/GetPropertyDefault.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/GetPropertyDefault.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/GetPropertyDefault.java
new file mode 100644
index 0000000..2766e41
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/GetPropertyDefault.java
@@ -0,0 +1,52 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
+import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
+
+public class GetPropertyDefault extends PerformAbstractTypeParams {
+
+    private ObjectAdapter result;
+
+    public GetPropertyDefault(final Perform.Mode mode) {
+        super("get property default", Type.PROPERTY, NumParameters.ZERO, mode);
+    }
+
+    @Override
+    public void doHandle(final PerformContext performContext) {
+
+        final ObjectAdapter onAdapter = performContext.getOnAdapter();
+        final ObjectMember nakedObjectMember = performContext.getObjectMember();
+
+        final OneToOneAssociation otoa = (OneToOneAssociation) nakedObjectMember;
+
+        // TODO: the OTOA interface is wrong, should be declared as returning a
+        // NakedObject
+        // (which is indeed what the implementation does)
+        result = otoa.getDefault(onAdapter);
+    }
+
+    @Override
+    public ObjectAdapter getResult() {
+        return result;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/InvokeAction.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/InvokeAction.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/InvokeAction.java
new file mode 100644
index 0000000..c3c7fe6
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/InvokeAction.java
@@ -0,0 +1,78 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform;
+
+import java.util.List;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.consent.Consent;
+import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
+import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
+import org.apache.isis.viewer.bdd.common.CellBinding;
+import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
+import org.apache.isis.viewer.bdd.common.ScenarioCell;
+
+public class InvokeAction extends PerformAbstractTypeParams {
+
+    private ObjectAdapter result;
+
+    public InvokeAction(final Perform.Mode mode) {
+        super("invoke action", Type.ACTION, NumParameters.UNLIMITED, mode);
+    }
+
+    @Override
+    public void doHandle(final PerformContext performContext) throws ScenarioBoundValueException {
+
+        final ObjectAdapter onAdapter = performContext.getOnAdapter();
+        final ObjectMember objectMember = performContext.getObjectMember();
+        final CellBinding onMemberBinding = performContext.getPeer().getOnMemberBinding();
+        final List<ScenarioCell> argumentCells = performContext.getArgumentCells();
+
+        final ObjectAction objectAction = (ObjectAction) objectMember;
+
+        final int parameterCount = objectAction.getParameterCount();
+        final boolean isContributedOneArgAction = objectAction.isContributed() && parameterCount == 1;
+
+        ObjectAdapter[] proposedArguments;
+        if (!isContributedOneArgAction) {
+
+            // lookup arguments
+            proposedArguments = performContext.getPeer().getAdapters(onAdapter, objectAction, onMemberBinding, argumentCells);
+
+            // validate arguments
+            final Consent argSetValid = objectAction.isProposedArgumentSetValid(onAdapter, proposedArguments);
+            if (argSetValid.isVetoed()) {
+                throw ScenarioBoundValueException.current(onMemberBinding, argSetValid.getReason());
+            }
+        } else {
+            proposedArguments = new ObjectAdapter[] { onAdapter };
+        }
+
+        // execute
+        result = objectAction.execute(onAdapter, proposedArguments);
+
+        // all OK.
+    }
+
+    @Override
+    public ObjectAdapter getResult() {
+        return result;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/Perform.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/Perform.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/Perform.java
new file mode 100644
index 0000000..10a1c7d
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/Perform.java
@@ -0,0 +1,37 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
+
+public interface Perform {
+
+    public static enum Mode {
+        SETUP, TEST
+    }
+
+    String getKey();
+
+    void perform(PerformContext performContext) throws ScenarioBoundValueException;
+
+    ObjectAdapter getResult();
+
+    boolean requiresMember();
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/PerformAbstract.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/PerformAbstract.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/PerformAbstract.java
new file mode 100644
index 0000000..a821df6
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/PerformAbstract.java
@@ -0,0 +1,47 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform;
+
+import org.apache.isis.core.commons.authentication.AuthenticationSession;
+import org.apache.isis.core.runtime.system.context.IsisContext;
+
+public abstract class PerformAbstract implements Perform {
+
+    private final String key;
+    private final Perform.Mode mode;
+
+    public PerformAbstract(final String key, final Perform.Mode mode) {
+        this.key = key;
+        this.mode = mode;
+    }
+
+    @Override
+    public String getKey() {
+        return key;
+    }
+
+    protected Perform.Mode getMode() {
+        return mode;
+    }
+
+    protected AuthenticationSession getSession() {
+        return IsisContext.getAuthenticationSession();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/PerformAbstractTypeParams.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/PerformAbstractTypeParams.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/PerformAbstractTypeParams.java
new file mode 100644
index 0000000..2e0d1fa
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/PerformAbstractTypeParams.java
@@ -0,0 +1,188 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform;
+
+import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
+import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
+import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
+import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
+import org.apache.isis.viewer.bdd.common.CellBinding;
+import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
+import org.apache.isis.viewer.bdd.common.ScenarioCell;
+
+public abstract class PerformAbstractTypeParams extends PerformAbstract {
+
+    protected static enum Type {
+        PROPERTY(true) {
+            @Override
+            String ensureMemberIsOfType(final ObjectMember m) {
+                return m instanceof OneToOneAssociation ? null : "(not a property)";
+            }
+        },
+        COLLECTION(true) {
+            @Override
+            String ensureMemberIsOfType(final ObjectMember m) {
+                return m instanceof OneToManyAssociation ? null : "(not a collection)";
+            }
+        },
+        ACTION(true) {
+            @Override
+            String ensureMemberIsOfType(final ObjectMember m) {
+                return m instanceof ObjectAction ? null : "(not an action)";
+            }
+        },
+        OBJECT(false) {
+            @Override
+            String ensureMemberIsOfType(final ObjectMember m) {
+                return m != null ? "(not required)" : null;
+            }
+        };
+        // public void ensureMemberIsOfType(
+        // final NakedObjectMember nakedObjectMember,
+        // final StoryCell onMemberCell) throws StoryFailureException {
+        // final String msg = ensureMemberIsOfType(nakedObjectMember);
+        // if (msg != null) {
+        // throw new StoryFailureException(onMemberCell, msg);
+        // }
+        // }
+
+        abstract String ensureMemberIsOfType(ObjectMember m);
+
+        private final boolean representsMember;
+
+        private Type(final boolean representsMember) {
+            this.representsMember = representsMember;
+        }
+
+        public boolean representsMember() {
+            return representsMember;
+        }
+    }
+
+    protected static enum NumParameters {
+        ZERO, ONE, UNLIMITED;
+    }
+
+    private final Type type;
+    private final NumParameters numParameters;
+
+    public PerformAbstractTypeParams(final String key, final Type type, final NumParameters numParameters, final Perform.Mode mode) {
+        super(key, mode);
+        this.type = type;
+        this.numParameters = numParameters;
+    }
+
+    @Override
+    public boolean requiresMember() {
+        return type.representsMember();
+    }
+
+    /**
+     * Can be overridden, but provides basic checking that member is of correct
+     * type and, if taking {@link NumParameters#ZERO zero} or
+     * {@link NumParameters#ONE one} parameter, that the correct number of
+     * actual arguments match.
+     */
+    @Override
+    public void perform(final PerformContext performContext) throws ScenarioBoundValueException {
+
+        final CellBinding onMemberBinding = performContext.getPeer().getOnMemberBinding();
+        final ScenarioCell onMemberCell = onMemberBinding.getCurrentCell();
+
+        final String reason = type.ensureMemberIsOfType(performContext.getObjectMember());
+        if (reason != null) {
+            throw ScenarioBoundValueException.current(onMemberBinding, reason);
+        }
+
+        if (type.representsMember()) {
+
+            if (getMode() == Perform.Mode.TEST) {
+
+                performContext.ensureAvailableForDeploymentType(onMemberBinding, onMemberCell);
+
+                performContext.ensureVisible(onMemberBinding, onMemberCell);
+                performContext.ensureUsable(onMemberBinding, onMemberCell);
+            }
+
+            // validate we have correct number of parameters if zero or one.
+            final int numArgs = performContext.getArgumentCells().size();
+
+            // don't do these two checks, because there could be additional
+            // cells due to previous or subsequent rows in the table
+            // (with the author keeping this 'tidy')
+
+            // if (numParameters == NumParameters.ZERO && length > 0) {
+            // ... "(no arguments required)"
+            // }
+            // if (numParameters == NumParameters.ONE && length > 1) {
+            // ... "(need just 1 argument)"
+            // }
+
+            // okay to do this check, though
+            if (numParameters == NumParameters.ONE && numArgs < 1) {
+                throw ScenarioBoundValueException.current(onMemberBinding, "(need one argument)");
+            }
+        }
+
+        doHandle(performContext);
+    }
+
+    /**
+     * Hook method that does nothing; should be overridden if
+     * {@link #perform(PerformContextForFitNesse) handle(...)} method has not
+     * been.
+     */
+    protected void doHandle(final PerformContext performContext) throws ScenarioBoundValueException {
+        // does nothing
+    }
+
+    // /**
+    // * Convenience; delegates to
+    // * {@link Type#ensureMemberIsOfType(NakedObjectMember)} and downcasts.
+    // */
+    // protected OneToOneAssociation ensureMemberIsProperty(
+    // final NakedObjectMember nakedObjectMember,
+    // final StoryCell usingMemberCell) throws StoryFailureException {
+    // type.ensureMemberIsOfType(nakedObjectMember, usingMemberCell);
+    // return (OneToOneAssociation) nakedObjectMember;
+    // }
+    //
+    // /**
+    // * Convenience; delegates to
+    // * {@link Type#ensureMemberIsOfType(NakedObjectMember)} and downcasts.
+    // */
+    // protected OneToManyAssociation ensureMemberIsCollection(
+    // final NakedObjectMember nakedObjectMember,
+    // final StoryCell usingMemberCell) throws StoryFailureException {
+    // type.ensureMemberIsOfType(nakedObjectMember, usingMemberCell);
+    // return (OneToManyAssociation) nakedObjectMember;
+    // }
+    //
+    // /**
+    // * Convenience; delegates to
+    // * {@link Type#ensureMemberIsOfType(NakedObjectMember)} and downcasts.
+    // */
+    // protected NakedObjectAction ensureMemberIsAction(
+    // final NakedObjectMember nakedObjectMember,
+    // final StoryCell usingMemberCell) throws StoryFailureException {
+    // type.ensureMemberIsOfType(nakedObjectMember, usingMemberCell);
+    // return (NakedObjectAction) nakedObjectMember;
+    // }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/PerformContext.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/PerformContext.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/PerformContext.java
new file mode 100644
index 0000000..e1679d5
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/PerformContext.java
@@ -0,0 +1,128 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform;
+
+import java.util.List;
+
+import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.core.commons.authentication.AuthenticationSession;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.consent.Consent;
+import org.apache.isis.core.metamodel.facets.actions.exploration.ExplorationFacet;
+import org.apache.isis.core.metamodel.facets.actions.prototype.PrototypeFacet;
+import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
+import org.apache.isis.core.runtime.system.DeploymentType;
+import org.apache.isis.viewer.bdd.common.CellBinding;
+import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
+import org.apache.isis.viewer.bdd.common.ScenarioCell;
+import org.apache.isis.viewer.bdd.common.fixtures.UsingIsisViewerPeer;
+import org.apache.isis.viewer.bdd.common.parsers.DateParser;
+
+/**
+ * Represents the context for a single {@link Perform} command; in effect, a row
+ * of a table.
+ */
+public class PerformContext {
+
+    // REVIEW: should provide this rendering context, rather than hardcoding.
+    // the net effect currently is that class members annotated with 
+    // @Hidden(where=Where.ANYWHERE) or @Disabled(where=Where.ANYWHERE) will indeed
+    // be hidden/disabled, but will be visible/enabled (perhaps incorrectly) 
+    // for any other value for Where
+    private final Where where = Where.ANYWHERE;
+
+    private final UsingIsisViewerPeer peer;
+
+    private final ObjectAdapter onAdapter;
+    private final ObjectMember objectMember;
+    private final List<ScenarioCell> argumentCells;
+
+    public PerformContext(final UsingIsisViewerPeer peer, final ObjectAdapter onAdapter, final ObjectMember objectMember, final List<ScenarioCell> argumentCells) {
+        this.onAdapter = onAdapter;
+        this.objectMember = objectMember;
+        this.peer = peer;
+        this.argumentCells = argumentCells;
+    }
+
+    public UsingIsisViewerPeer getPeer() {
+        return peer;
+    }
+
+    public ObjectAdapter getOnAdapter() {
+        return onAdapter;
+    }
+
+    public ObjectMember getObjectMember() {
+        return objectMember;
+    }
+
+    public List<ScenarioCell> getArgumentCells() {
+        return argumentCells;
+    }
+
+    public Consent visibleMemberConsent() {
+        return getObjectMember().isVisible(getAuthenticationSession(), getOnAdapter(), where);
+    }
+
+    public Consent usableMemberConsent() {
+        return getObjectMember().isUsable(getAuthenticationSession(), getOnAdapter(), where);
+    }
+
+    public Consent validObjectConsent() {
+        final ObjectAdapter onAdapter = getOnAdapter();
+        return onAdapter.getSpecification().isValid(onAdapter);
+    }
+
+    public void ensureVisible(final CellBinding onMemberBinding, final ScenarioCell onMemberCell) throws ScenarioBoundValueException {
+        final Consent visible = objectMember.isVisible(getAuthenticationSession(), getOnAdapter(), where);
+        if (visible.isVetoed()) {
+            throw ScenarioBoundValueException.current(onMemberBinding, "(not visible)");
+        }
+    }
+
+    public void ensureUsable(final CellBinding onMemberBinding, final ScenarioCell onMemberCell) throws ScenarioBoundValueException {
+        final Consent usable = objectMember.isUsable(getAuthenticationSession(), getOnAdapter(), where);
+        if (usable.isVetoed()) {
+            throw ScenarioBoundValueException.current(onMemberBinding, "(not usable)");
+        }
+    }
+
+    public void ensureAvailableForDeploymentType(final CellBinding onMemberBinding, final ScenarioCell onMemberCell) throws ScenarioBoundValueException {
+        final DeploymentType deploymentType = this.peer.getDeploymentType();
+
+        final boolean isExploration = objectMember.getFacet(ExplorationFacet.class) != null;
+        if (isExploration && !deploymentType.isExploring()) {
+            throw ScenarioBoundValueException.current(onMemberBinding, "(not running in exploration mode)");
+        }
+
+        final boolean isPrototype = objectMember.getFacet(PrototypeFacet.class) != null;
+        if (isPrototype && !deploymentType.isPrototyping()) {
+            throw ScenarioBoundValueException.current(onMemberBinding, "(not running in prototype mode)");
+        }
+    }
+
+    protected AuthenticationSession getAuthenticationSession() {
+        return getPeer().getAuthenticationSession();
+    }
+
+    public DateParser getDateParser() {
+        return peer.getDateParser();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/PerformOwner.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/PerformOwner.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/PerformOwner.java
new file mode 100644
index 0000000..06b5157
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/PerformOwner.java
@@ -0,0 +1,23 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform;
+
+public interface PerformOwner {
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/RemoveFromCollection.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/RemoveFromCollection.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/RemoveFromCollection.java
new file mode 100644
index 0000000..7fe0b39
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/RemoveFromCollection.java
@@ -0,0 +1,86 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform;
+
+import java.util.List;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.consent.Consent;
+import org.apache.isis.core.metamodel.consent.InteractionInvocationMethod;
+import org.apache.isis.core.metamodel.facets.collections.modify.CollectionRemoveFromFacet;
+import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
+import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
+import org.apache.isis.viewer.bdd.common.CellBinding;
+import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
+import org.apache.isis.viewer.bdd.common.ScenarioCell;
+
+public class RemoveFromCollection extends PerformAbstractTypeParams {
+
+    private ObjectAdapter result;
+
+    public RemoveFromCollection(final Perform.Mode mode) {
+        super("remove from collection", Type.COLLECTION, NumParameters.ONE, mode);
+    }
+
+    @Override
+    public void doHandle(final PerformContext performContext) throws ScenarioBoundValueException {
+
+        final ObjectAdapter onAdapter = performContext.getOnAdapter();
+        final ObjectMember nakedObjectMember = performContext.getObjectMember();
+        final CellBinding onMemberBinding = performContext.getPeer().getOnMemberBinding();
+        @SuppressWarnings("unused")
+        final ScenarioCell onMemberCell = onMemberBinding.getCurrentCell();
+
+        final List<ScenarioCell> argumentCells = performContext.getArgumentCells();
+
+        final OneToManyAssociation otma = (OneToManyAssociation) nakedObjectMember;
+
+        // safe since guaranteed by superclass
+        final CellBinding arg0Binding = performContext.getPeer().getArg0Binding();
+        final ScenarioCell arg0Cell = argumentCells.get(0);
+        final String toRemove = arg0Cell.getText();
+
+        final CollectionRemoveFromFacet removeFromFacet = nakedObjectMember.getFacet(CollectionRemoveFromFacet.class);
+        if (removeFromFacet == null) {
+            throw ScenarioBoundValueException.current(onMemberBinding, "(cannot remove from collection)");
+        }
+
+        final ObjectAdapter toRemoveAdapter = performContext.getPeer().getAliasRegistry().getAliased(toRemove);
+        if (toRemoveAdapter == null) {
+            throw ScenarioBoundValueException.current(arg0Binding, "(unknown alias)");
+        }
+
+        // validate argument
+        otma.createValidateAddInteractionContext(getSession(), InteractionInvocationMethod.BY_USER, onAdapter, toRemoveAdapter);
+        final Consent validToRemove = otma.isValidToRemove(onAdapter, toRemoveAdapter);
+        if (validToRemove.isVetoed()) {
+            throw ScenarioBoundValueException.current(onMemberBinding, validToRemove.getReason());
+        }
+
+        // remove
+        removeFromFacet.remove(onAdapter, toRemoveAdapter);
+
+    }
+
+    @Override
+    public ObjectAdapter getResult() {
+        return result;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/SaveObject.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/SaveObject.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/SaveObject.java
new file mode 100644
index 0000000..d101d13
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/SaveObject.java
@@ -0,0 +1,71 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.consent.Consent;
+import org.apache.isis.core.runtime.system.context.IsisContext;
+import org.apache.isis.core.runtime.system.persistence.Persistor;
+import org.apache.isis.viewer.bdd.common.CellBinding;
+import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
+
+public class SaveObject extends PerformAbstractTypeParams {
+
+    private ObjectAdapter result;
+
+    public SaveObject(final Perform.Mode mode) {
+        super("save", Type.OBJECT, NumParameters.ZERO, mode);
+    }
+
+    @Override
+    public void doHandle(final PerformContext performContext) throws ScenarioBoundValueException {
+
+        final ObjectAdapter onAdapter = performContext.getOnAdapter();
+
+        final Consent valid = onAdapter.getSpecification().isValid(onAdapter);
+
+        final CellBinding performBinding = performContext.getPeer().getPerformBinding();
+        if (valid.isVetoed()) {
+            throw ScenarioBoundValueException.current(performBinding, valid.getReason());
+        }
+
+        if (onAdapter.representsPersistent()) {
+            throw ScenarioBoundValueException.current(performBinding, "(already persistent)");
+        }
+
+        // persist
+
+        // xactn mgmt now performed by PersistenceSession#makePersistent
+        // getOwner().getTransactionManager().startTransaction();
+        getPersistenceSession().makePersistent(onAdapter);
+        // getOwner().getTransactionManager().endTransaction();
+
+        // all OK.
+    }
+
+    protected Persistor getPersistenceSession() {
+        return IsisContext.getPersistenceSession();
+    }
+
+    @Override
+    public ObjectAdapter getResult() {
+        return result;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/SetProperty.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/SetProperty.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/SetProperty.java
new file mode 100644
index 0000000..71d7c85
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/SetProperty.java
@@ -0,0 +1,79 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform;
+
+import java.util.List;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.consent.Consent;
+import org.apache.isis.core.metamodel.facets.properties.modify.PropertySetterFacet;
+import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
+import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
+import org.apache.isis.viewer.bdd.common.CellBinding;
+import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
+import org.apache.isis.viewer.bdd.common.ScenarioCell;
+
+public class SetProperty extends PerformAbstractTypeParams {
+
+    private ObjectAdapter result;
+
+    public SetProperty(final Perform.Mode mode) {
+        super("set property", Type.PROPERTY, NumParameters.ONE, mode);
+    }
+
+    @Override
+    public void doHandle(final PerformContext performContext) throws ScenarioBoundValueException {
+
+        final ObjectAdapter onAdapter = performContext.getOnAdapter();
+        final ObjectMember nakedObjectMember = performContext.getObjectMember();
+        final List<ScenarioCell> argumentCells = performContext.getArgumentCells();
+
+        final OneToOneAssociation otoa = (OneToOneAssociation) nakedObjectMember;
+
+        // set
+        final PropertySetterFacet setterFacet = otoa.getFacet(PropertySetterFacet.class);
+        if (setterFacet == null) {
+            final CellBinding onMemberBinding = performContext.getPeer().getOnMemberBinding();
+            throw ScenarioBoundValueException.current(onMemberBinding, "(cannot set)");
+        }
+
+        // safe to obtain since guaranteed by superclass
+        final CellBinding arg0Binding = performContext.getPeer().getArg0Binding();
+        final ScenarioCell arg0Cell = argumentCells.get(0);
+
+        // obtain existing as 'context' (used if this is a parsed @Value)
+        final ObjectAdapter contextAdapter = otoa.get(onAdapter);
+
+        // validate parameter
+        final ObjectAdapter toSetAdapter = performContext.getPeer().getAdapter(contextAdapter, otoa.getSpecification(), arg0Binding, arg0Cell);
+        final Consent validConsent = otoa.isAssociationValid(onAdapter, toSetAdapter);
+        if (validConsent.isVetoed()) {
+            throw ScenarioBoundValueException.current(arg0Binding, validConsent.getReason());
+        }
+
+        setterFacet.setProperty(onAdapter, toSetAdapter);
+
+    }
+
+    @Override
+    public ObjectAdapter getResult() {
+        return result;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/AssertsContainment.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/AssertsContainment.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/AssertsContainment.java
new file mode 100644
index 0000000..b3b246b
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/AssertsContainment.java
@@ -0,0 +1,53 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat;
+
+/**
+ * Parameterizes {@link ThatSubcommand}s.
+ */
+public enum AssertsContainment {
+
+    CONTAINS("contains", true, "(does not contain)"), DOES_NOT_CONTAIN("does not contain", false, "(contains)");
+
+    private final String key;
+    private final boolean contains;
+    private final String errorMsgIfNotSatisfied;
+
+    private AssertsContainment(final String key, final boolean contains, final String errorMsgIfNotSatisfied) {
+        this.key = key;
+        this.contains = contains;
+        this.errorMsgIfNotSatisfied = errorMsgIfNotSatisfied;
+    }
+
+    public String getKey() {
+        return key;
+    }
+
+    public boolean doesContain() {
+        return contains;
+    }
+
+    public boolean isSatisfiedBy(final boolean contains) {
+        return this.contains == contains;
+    }
+
+    public String getErrorMsgIfNotSatisfied() {
+        return errorMsgIfNotSatisfied;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/AssertsEmpty.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/AssertsEmpty.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/AssertsEmpty.java
new file mode 100644
index 0000000..6b69c09
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/AssertsEmpty.java
@@ -0,0 +1,53 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat;
+
+/**
+ * Parameterizes {@link ThatSubcommand}s.
+ */
+public enum AssertsEmpty {
+
+    EMPTY("is empty", true, "(not empty)"), NOT_EMPTY("is not empty", false, "(empty)");
+
+    private final String key;
+    private final boolean empty;
+    private final String errorMsgIfNotSatisfied;
+
+    AssertsEmpty(final String key, final boolean empty, final String errorMsgIfNotSatisfied) {
+        this.key = key;
+        this.empty = empty;
+        this.errorMsgIfNotSatisfied = errorMsgIfNotSatisfied;
+    }
+
+    public String getKey() {
+        return key;
+    }
+
+    public boolean isEmpty() {
+        return empty;
+    }
+
+    public boolean isSatisfiedBy(final boolean empty) {
+        return this.empty == empty;
+    }
+
+    public String getErrorMsgIfNotSatisfied() {
+        return errorMsgIfNotSatisfied;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/AssertsValidity.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/AssertsValidity.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/AssertsValidity.java
new file mode 100644
index 0000000..831512c
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/AssertsValidity.java
@@ -0,0 +1,70 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat;
+
+import org.apache.isis.core.metamodel.consent.Consent;
+import org.apache.isis.viewer.bdd.common.CellBinding;
+
+/**
+ * Parameterizes {@link ThatSubcommand}s.
+ * 
+ * @author Dan Haywood
+ */
+public enum AssertsValidity {
+
+    VALID(true, "is valid for", "is valid", "valid"), INVALID(false, "is not valid for", "is not valid", "not valid", "invalid");
+
+    private final String[] keys;
+    private final boolean valid;
+
+    AssertsValidity(final boolean valid, final String... keys) {
+        this.keys = keys;
+        this.valid = valid;
+    }
+
+    public String[] getKeys() {
+        return keys;
+    }
+
+    public boolean isValid() {
+        return valid;
+    }
+
+    public boolean satisfiedBy(final Consent validityConsent) {
+        return validityConsent.isAllowed() && isValid() || validityConsent.isVetoed() && !isValid();
+    }
+
+    /**
+     * The reason to use if the assertion is not valid.
+     */
+    public String getReason(final Consent validityConsent) {
+        return isValid() ? validityConsent.getReason() : "(valid)";
+    }
+
+    /**
+     * The binding whose current cell should be coloured if the assertion fails.
+     */
+    public CellBinding colorBinding(final CellBinding arg0Binding, final CellBinding thatBinding) {
+        if (arg0Binding == null) {
+            return thatBinding;
+        }
+        return isValid() ? arg0Binding : thatBinding;
+    }
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/Disabled.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/Disabled.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/Disabled.java
new file mode 100644
index 0000000..5242f81
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/Disabled.java
@@ -0,0 +1,44 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.viewer.bdd.common.CellBinding;
+import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
+
+public class Disabled extends ThatSubcommandAbstract {
+
+    public Disabled() {
+        super("is disabled", "is not usable", "is not enabled");
+    }
+
+    @Override
+    public ObjectAdapter that(final PerformContext performContext) throws ScenarioBoundValueException {
+
+        if (performContext.usableMemberConsent().isAllowed()) {
+            final CellBinding onMemberBinding = performContext.getPeer().getOnMemberBinding();
+            throw ScenarioBoundValueException.current(onMemberBinding, "(usable)");
+        }
+
+        return null;
+
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/Hidden.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/Hidden.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/Hidden.java
new file mode 100644
index 0000000..a39148c
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/Hidden.java
@@ -0,0 +1,43 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.viewer.bdd.common.CellBinding;
+import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
+
+public class Hidden extends ThatSubcommandAbstract {
+
+    public Hidden() {
+        super("is hidden", "is not visible");
+    }
+
+    @Override
+    public ObjectAdapter that(final PerformContext performContext) throws ScenarioBoundValueException {
+
+        if (performContext.visibleMemberConsent().isAllowed()) {
+            final CellBinding onMemberBinding = performContext.getPeer().getOnMemberBinding();
+            throw ScenarioBoundValueException.current(onMemberBinding, "(visible)");
+        }
+
+        return null;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/PerformCheckThatAbstract.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/PerformCheckThatAbstract.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/PerformCheckThatAbstract.java
new file mode 100644
index 0000000..46fbf3a
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/PerformCheckThatAbstract.java
@@ -0,0 +1,78 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.viewer.bdd.common.CellBinding;
+import org.apache.isis.viewer.bdd.common.IsisViewerConstants;
+import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
+import org.apache.isis.viewer.bdd.common.ScenarioCell;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.Perform;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformAbstract;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
+
+public abstract class PerformCheckThatAbstract extends PerformAbstract {
+
+    protected static enum OnMemberColumn {
+        REQUIRED, NOT_REQUIRED
+    }
+
+    private final Map<String, ThatSubcommand> subcommandByKey = new HashMap<String, ThatSubcommand>();
+    private ObjectAdapter result;
+    private final boolean requiresMember;
+
+    public PerformCheckThatAbstract(final String key, final OnMemberColumn onMemberColumn, final Perform.Mode mode, final ThatSubcommand... thatSubcommands) {
+        super(key, mode);
+        requiresMember = onMemberColumn == OnMemberColumn.REQUIRED;
+        for (final ThatSubcommand thatSubcommand : thatSubcommands) {
+            for (final String subKey : thatSubcommand.getSubkeys()) {
+                subcommandByKey.put(subKey, thatSubcommand);
+            }
+        }
+    }
+
+    @Override
+    public void perform(final PerformContext performContext) throws ScenarioBoundValueException {
+        final CellBinding thatItBinding = performContext.getPeer().getThatItBinding();
+        if (!thatItBinding.isFound()) {
+            final CellBinding performBinding = performContext.getPeer().getPerformBinding();
+            throw ScenarioBoundValueException.current(performBinding, "(require " + IsisViewerConstants.THAT_IT_NAME + "' column)");
+        }
+        final ScenarioCell thatItCell = thatItBinding.getCurrentCell();
+        final String thatIt = thatItCell.getText();
+        final ThatSubcommand thatSubcommand = subcommandByKey.get(thatIt);
+        if (thatSubcommand == null) {
+            throw ScenarioBoundValueException.current(thatItBinding, "(unknown '" + IsisViewerConstants.THAT_IT_NAME + "' verb)");
+        }
+        result = thatSubcommand.that(performContext);
+    }
+
+    @Override
+    public ObjectAdapter getResult() {
+        return result;
+    }
+
+    @Override
+    public boolean requiresMember() {
+        return requiresMember;
+    }
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/ProposedArgumentValidityAbstract.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/ProposedArgumentValidityAbstract.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/ProposedArgumentValidityAbstract.java
new file mode 100644
index 0000000..91fd422
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/ProposedArgumentValidityAbstract.java
@@ -0,0 +1,65 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat;
+
+import org.apache.isis.core.commons.lang.StringUtils;
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.consent.Consent;
+import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
+import org.apache.isis.viewer.bdd.common.CellBinding;
+import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
+import org.apache.isis.viewer.bdd.common.ScenarioCell;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
+
+public abstract class ProposedArgumentValidityAbstract extends ThatValidityAbstract {
+
+    public ProposedArgumentValidityAbstract(final AssertsValidity assertion) {
+        super(assertion);
+    }
+
+    @Override
+    public ObjectAdapter that(final PerformContext performContext) throws ScenarioBoundValueException {
+
+        final ObjectMember nakedObjectMember = performContext.getObjectMember();
+        final CellBinding thatBinding = performContext.getPeer().getThatItBinding();
+        final CellBinding arg0Binding = performContext.getPeer().getArg0Binding();
+
+        // check we have an argument to validate (if one is required)
+        if (!arg0Binding.isFound()) {
+            throw ScenarioBoundValueException.current(thatBinding, "(requires argument)");
+        }
+
+        final ScenarioCell arg0Cell = arg0Binding.getCurrentCell();
+        final String toValidate = arg0Cell.getText();
+        if (StringUtils.isNullOrEmpty(toValidate)) {
+            throw ScenarioBoundValueException.current(arg0Binding, "(required)");
+        }
+
+        final ObjectAdapter toValidateAdapter = performContext.getPeer().getAdapter(null, nakedObjectMember.getSpecification(), arg0Binding, arg0Cell);
+        final Consent validityConsent = determineConsent(performContext, toValidateAdapter);
+        if (!getAssertion().satisfiedBy(validityConsent)) {
+            throw ScenarioBoundValueException.current(getAssertion().colorBinding(arg0Binding, thatBinding), getAssertion().getReason(validityConsent));
+        }
+
+        return toValidateAdapter;
+    }
+
+    protected abstract Consent determineConsent(final PerformContext performContext, ObjectAdapter toValidateAdapter);
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/ThatSubcommand.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/ThatSubcommand.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/ThatSubcommand.java
new file mode 100644
index 0000000..9209512
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/ThatSubcommand.java
@@ -0,0 +1,36 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat;
+
+import java.util.List;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformOwner;
+
+public interface ThatSubcommand {
+
+    ObjectAdapter that(PerformContext performContext) throws ScenarioBoundValueException;
+
+    List<String> getSubkeys();
+
+    void setOwner(PerformOwner owner);
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/ThatSubcommandAbstract.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/ThatSubcommandAbstract.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/ThatSubcommandAbstract.java
new file mode 100644
index 0000000..fcc8206
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/ThatSubcommandAbstract.java
@@ -0,0 +1,53 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformOwner;
+
+public abstract class ThatSubcommandAbstract implements ThatSubcommand {
+
+    private final List<String> subkeys;
+    private PerformOwner owner;
+
+    public ThatSubcommandAbstract(final String... subkeys) {
+        this.subkeys = Collections.unmodifiableList(Arrays.asList(subkeys));
+    }
+
+    @Override
+    public List<String> getSubkeys() {
+        return subkeys;
+    }
+
+    protected PerformOwner getOwner() {
+        return owner;
+    }
+
+    /**
+     * Injected.
+     */
+    @Override
+    public void setOwner(final PerformOwner owner) {
+        this.owner = owner;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/ThatValidityAbstract.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/ThatValidityAbstract.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/ThatValidityAbstract.java
new file mode 100644
index 0000000..9c41083
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/ThatValidityAbstract.java
@@ -0,0 +1,34 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat;
+
+public abstract class ThatValidityAbstract extends ThatSubcommandAbstract {
+
+    private final AssertsValidity assertion;
+
+    public ThatValidityAbstract(final AssertsValidity assertion) {
+        super(assertion.getKeys());
+        this.assertion = assertion;
+    }
+
+    public AssertsValidity getAssertion() {
+        return assertion;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/Usable.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/Usable.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/Usable.java
new file mode 100644
index 0000000..b254b94
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/Usable.java
@@ -0,0 +1,43 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.viewer.bdd.common.CellBinding;
+import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
+
+public class Usable extends ThatSubcommandAbstract {
+
+    public Usable() {
+        super("is usable", "is enabled", "is not disabled");
+    }
+
+    @Override
+    public ObjectAdapter that(final PerformContext performContext) throws ScenarioBoundValueException {
+
+        if (!performContext.usableMemberConsent().isAllowed()) {
+            final CellBinding onMemberBinding = performContext.getPeer().getOnMemberBinding();
+            throw ScenarioBoundValueException.current(onMemberBinding, "(disabled)");
+        }
+
+        return null;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/Visible.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/Visible.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/Visible.java
new file mode 100644
index 0000000..02c7c7d
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/Visible.java
@@ -0,0 +1,43 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.viewer.bdd.common.CellBinding;
+import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
+
+public class Visible extends ThatSubcommandAbstract {
+
+    public Visible() {
+        super("is visible", "is not hidden");
+    }
+
+    @Override
+    public ObjectAdapter that(final PerformContext performContext) throws ScenarioBoundValueException {
+
+        if (performContext.visibleMemberConsent().isVetoed()) {
+            final CellBinding onMemberBinding = performContext.getPeer().getOnMemberBinding();
+            throw ScenarioBoundValueException.current(onMemberBinding, "(hidden)");
+        }
+
+        return null;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/action/ArgumentSetNotValid.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/action/ArgumentSetNotValid.java b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/action/ArgumentSetNotValid.java
new file mode 100644
index 0000000..906305a
--- /dev/null
+++ b/mothballed/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/action/ArgumentSetNotValid.java
@@ -0,0 +1,70 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.action;
+
+import java.util.List;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.consent.Consent;
+import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
+import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
+import org.apache.isis.viewer.bdd.common.CellBinding;
+import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
+import org.apache.isis.viewer.bdd.common.ScenarioCell;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
+import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.ThatSubcommandAbstract;
+
+public class ArgumentSetNotValid extends ThatSubcommandAbstract {
+
+    public ArgumentSetNotValid() {
+        super("is not valid for", "is invalid", "invalid");
+    }
+
+    // TODO: a lot of duplication with InvokeAction; simplify somehow?
+    @Override
+    public ObjectAdapter that(final PerformContext performContext) throws ScenarioBoundValueException {
+
+        final ObjectAdapter onAdapter = performContext.getOnAdapter();
+        final ObjectMember nakedObjectMember = performContext.getObjectMember();
+        final CellBinding onMemberBinding = performContext.getPeer().getOnMemberBinding();
+        final List<ScenarioCell> argumentCells = performContext.getArgumentCells();
+
+        final ObjectAction nakedObjectAction = (ObjectAction) nakedObjectMember;
+        final int parameterCount = nakedObjectAction.getParameterCount();
+        final boolean isContributedOneArgAction = nakedObjectAction.isContributed() && parameterCount == 1;
+
+        if (isContributedOneArgAction) {
+            return null;
+        }
+
+        // lookup arguments
+        final ObjectAdapter[] proposedArguments = performContext.getPeer().getAdapters(onAdapter, nakedObjectAction, onMemberBinding, argumentCells);
+
+        // validate arguments
+        final Consent argSetValid = nakedObjectAction.isProposedArgumentSetValid(onAdapter, proposedArguments);
+        if (argSetValid.isAllowed()) {
+            final CellBinding thatItBinding = performContext.getPeer().getThatItBinding();
+            throw ScenarioBoundValueException.current(thatItBinding, "(valid)");
+        }
+
+        // execute
+        return null;
+    }
+
+}


[02/19] ISIS-463: mothballing BDD viewer

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/src/site/resources/xmlmind/xhtml1-strict.dtd
----------------------------------------------------------------------
diff --git a/mothballed/bdd/src/site/resources/xmlmind/xhtml1-strict.dtd b/mothballed/bdd/src/site/resources/xmlmind/xhtml1-strict.dtd
new file mode 100644
index 0000000..d26726e
--- /dev/null
+++ b/mothballed/bdd/src/site/resources/xmlmind/xhtml1-strict.dtd
@@ -0,0 +1,988 @@
+<!--
+   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.24 $
+   $Date: 2002/07/31 19:34:51 $
+
+-->
+
+<!--================ 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
+  concordion:assertEquals  CDATA         #IMPLIED
+  concordion:set           CDATA         #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;
+  concordion:execute  CDATA         #IMPLIED
+  >
+
+<!--=================== 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
+  concordion:run  CDATA         #IMPLIED
+  >
+
+<!--===================== Inline Elements ================================-->
+
+<!ELEMENT span %Inline;> <!-- generic language/style container -->
+<!ATTLIST span
+  %attrs;
+  concordion:assertTrue  CDATA         #IMPLIED
+  concordion:assertFalse  CDATA         #IMPLIED
+  >
+
+<!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
+  isis:execute          CDATA    #IMPLIED
+  concordion:verifyRows CDATA    #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;
+  >
+

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/src/site/site.xml
----------------------------------------------------------------------
diff --git a/mothballed/bdd/src/site/site.xml b/mothballed/bdd/src/site/site.xml
new file mode 100644
index 0000000..1bd601f
--- /dev/null
+++ b/mothballed/bdd/src/site/site.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+  
+         http://www.apache.org/licenses/LICENSE-2.0
+         
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<project>
+
+	<body>
+		<breadcrumbs>
+			<item name="BDD Integration" href="index.html"/>
+		</breadcrumbs>
+
+		<menu name="BDD Integration">
+			<item name="About" href="index.html" />
+            <item name="Jottings" href="jottings.html" />
+		</menu>
+
+        <menu name="Viewer Modules">
+            <item name="HTML" href="../html/index.html" />
+            <item name="Scimpi" href="../scimpi/index.html" />
+            <item name="Wicket" href="../wicket/index.html" />
+            <item name="RestfulObjects" href="../restfulobjects/index.html" />
+            <item name="JUnit Support" href="../junit/index.html" />
+            <item name="BDD Integration" href="../bdd/index.html" />
+            <item name="DnD" href="../dnd/index.html" />
+        </menu>
+        
+        <menu name="BDD Modules">
+            <item name="Common" href="./bdd-common/index.html" />
+            <item name="Concordion" href="./bdd-concordion/index.html" />
+        </menu>
+
+		<menu name="Documentation">
+			<item name="${docbkxGuideTitle} (PDF)" href="docbkx/pdf/${docbkxGuideName}.pdf" />
+			<item name="${docbkxGuideTitle} (HTML)" href="docbkx/html/guide/${docbkxGuideName}.html" />
+		</menu>
+
+		<menu name="Maven Reports" ref="reports" />
+	</body>
+
+</project>

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/tck/pom.xml
----------------------------------------------------------------------
diff --git a/mothballed/bdd/tck/pom.xml b/mothballed/bdd/tck/pom.xml
new file mode 100644
index 0000000..46793e3
--- /dev/null
+++ b/mothballed/bdd/tck/pom.xml
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+  
+         http://www.apache.org/licenses/LICENSE-2.0
+         
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.isis.core</groupId>
+        <artifactId>isis-core-tck</artifactId>
+        <version>1.3.0-SNAPSHOT</version>
+        <relativePath>../../../../core/tck/pom.xml</relativePath>
+    </parent>
+
+    <groupId>org.apache.isis.viewer</groupId>
+	<artifactId>isis-viewer-bdd-concordion-tck</artifactId>
+
+	<name>Isis BDD Viewer (Concordion) TCK tests</name>
+
+    <properties>
+        <maven.test.skip>true</maven.test.skip>
+
+		<!-- until someone comes up with a better solution -->
+        <distMgmtSiteUrl>file:///tmp/m2-sites/isis/viewer/bdd</distMgmtSiteUrl>
+
+    </properties>
+    
+    <build>
+		<plugins>
+            <plugin>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <systemPropertyVariables>
+                        <concordion.output.dir>${project.build.directory}/concordion</concordion.output.dir>
+                    </systemPropertyVariables>
+                    <includes>
+                         <include>**/AllStories.java</include>
+                    </includes>
+                </configuration>
+            </plugin>
+		</plugins>
+    </build>
+	
+	<dependencies>
+
+		<!-- this project's dependencies -->
+        <dependency>
+            <groupId>org.apache.isis.core</groupId>
+            <artifactId>isis-core-tck-fixture</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.isis.core</groupId>
+            <artifactId>isis-core-bytecode-cglib</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.isis.core</groupId>
+            <artifactId>isis-core-objectstore</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.isis.core</groupId>
+            <artifactId>isis-core-profilestore</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.isis.core</groupId>
+            <artifactId>isis-core-security</artifactId>
+        </dependency>
+
+
+		<!-- BDD Viewers concordion dependencies -->
+		<dependency>
+			<groupId>org.apache.isis.viewer</groupId>
+            <artifactId>isis-viewer-bdd-concordion</artifactId>
+            <version>1.0.0-SNAPSHOT</version>
+            <scope>test</scope>
+        </dependency>
+
+        <!--  direct dependency required because is LGPL licensed -->
+        <dependency>
+            <groupId>xom</groupId>
+            <artifactId>xom</artifactId>
+            <version>1.2.5</version>
+            <exclusions>
+            <exclusion>
+            	<!-- for dependency convergence -->
+            	<groupId>xml-apis</groupId>
+            	<artifactId>xml-apis</artifactId>
+            </exclusion>
+            </exclusions>
+        </dependency>
+        
+        <dependency>
+        	<groupId>xml-apis</groupId>
+        	<artifactId>xml-apis</artifactId>
+        	<version>2.0.2</version>
+        </dependency>
+
+	</dependencies>
+</project>

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/tck/src/test/java/viewer/bdd/AbstractApplicationStory.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/tck/src/test/java/viewer/bdd/AbstractApplicationStory.java b/mothballed/bdd/tck/src/test/java/viewer/bdd/AbstractApplicationStory.java
new file mode 100644
index 0000000..215a603
--- /dev/null
+++ b/mothballed/bdd/tck/src/test/java/viewer/bdd/AbstractApplicationStory.java
@@ -0,0 +1,34 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package viewer.bdd;
+
+import org.apache.isis.viewer.bdd.concordion.AbstractIsisConcordionScenario;
+
+public abstract class AbstractApplicationStory extends AbstractIsisConcordionScenario {
+
+    /**
+     * This superclass also acts as the marker for the location of the custom
+     * CSS.
+     */
+    @Override
+    protected Class<?> customCssPackage() {
+        return AbstractApplicationStory.class;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/tck/src/test/java/viewer/bdd/common/BootstrapInExplorationMode.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/tck/src/test/java/viewer/bdd/common/BootstrapInExplorationMode.java b/mothballed/bdd/tck/src/test/java/viewer/bdd/common/BootstrapInExplorationMode.java
new file mode 100644
index 0000000..163a30e
--- /dev/null
+++ b/mothballed/bdd/tck/src/test/java/viewer/bdd/common/BootstrapInExplorationMode.java
@@ -0,0 +1,25 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package viewer.bdd.common;
+
+import org.apache.isis.viewer.bdd.concordion.AbstractIsisConcordionScenario;
+
+public class BootstrapInExplorationMode extends AbstractIsisConcordionScenario {
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/tck/src/test/java/viewer/bdd/common/ToDoItems.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/tck/src/test/java/viewer/bdd/common/ToDoItems.java b/mothballed/bdd/tck/src/test/java/viewer/bdd/common/ToDoItems.java
new file mode 100644
index 0000000..7b13f27
--- /dev/null
+++ b/mothballed/bdd/tck/src/test/java/viewer/bdd/common/ToDoItems.java
@@ -0,0 +1,25 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package viewer.bdd.common;
+
+import org.apache.isis.viewer.bdd.concordion.AbstractIsisConcordionScenario;
+
+public class ToDoItems extends AbstractIsisConcordionScenario {
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/tck/src/test/java/viewer/bdd/stories/AllStories.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/tck/src/test/java/viewer/bdd/stories/AllStories.java b/mothballed/bdd/tck/src/test/java/viewer/bdd/stories/AllStories.java
new file mode 100644
index 0000000..cd172c7
--- /dev/null
+++ b/mothballed/bdd/tck/src/test/java/viewer/bdd/stories/AllStories.java
@@ -0,0 +1,25 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package viewer.bdd.stories;
+
+import viewer.bdd.AbstractApplicationStory;
+
+public class AllStories extends AbstractApplicationStory {
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/tck/src/test/java/viewer/bdd/stories/todo/Fixtures.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/tck/src/test/java/viewer/bdd/stories/todo/Fixtures.java b/mothballed/bdd/tck/src/test/java/viewer/bdd/stories/todo/Fixtures.java
new file mode 100644
index 0000000..eeb8895
--- /dev/null
+++ b/mothballed/bdd/tck/src/test/java/viewer/bdd/stories/todo/Fixtures.java
@@ -0,0 +1,25 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package viewer.bdd.stories.todo;
+
+import viewer.bdd.AbstractApplicationStory;
+
+public class Fixtures extends AbstractApplicationStory {
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/tck/src/test/java/viewer/bdd/stories/todo/Index.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/tck/src/test/java/viewer/bdd/stories/todo/Index.java b/mothballed/bdd/tck/src/test/java/viewer/bdd/stories/todo/Index.java
new file mode 100644
index 0000000..bdf0259
--- /dev/null
+++ b/mothballed/bdd/tck/src/test/java/viewer/bdd/stories/todo/Index.java
@@ -0,0 +1,25 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package viewer.bdd.stories.todo;
+
+import viewer.bdd.AbstractApplicationStory;
+
+public class Index extends AbstractApplicationStory {
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/tck/src/test/java/viewer/bdd/stories/todo/ScenarioMarkItemAsDone.java
----------------------------------------------------------------------
diff --git a/mothballed/bdd/tck/src/test/java/viewer/bdd/stories/todo/ScenarioMarkItemAsDone.java b/mothballed/bdd/tck/src/test/java/viewer/bdd/stories/todo/ScenarioMarkItemAsDone.java
new file mode 100644
index 0000000..b4715e2
--- /dev/null
+++ b/mothballed/bdd/tck/src/test/java/viewer/bdd/stories/todo/ScenarioMarkItemAsDone.java
@@ -0,0 +1,25 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package viewer.bdd.stories.todo;
+
+import viewer.bdd.AbstractApplicationStory;
+
+public class ScenarioMarkItemAsDone extends AbstractApplicationStory {
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/tck/src/test/resources/dtd/xhtml-lat1.ent
----------------------------------------------------------------------
diff --git a/mothballed/bdd/tck/src/test/resources/dtd/xhtml-lat1.ent b/mothballed/bdd/tck/src/test/resources/dtd/xhtml-lat1.ent
new file mode 100644
index 0000000..ffee223
--- /dev/null
+++ b/mothballed/bdd/tck/src/test/resources/dtd/xhtml-lat1.ent
@@ -0,0 +1,196 @@
+<!-- Portions (C) International Organization for Standardization 1986
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+-->
+<!-- Character entity set. Typical invocation:
+    <!ENTITY % HTMLlat1 PUBLIC
+       "-//W3C//ENTITIES Latin 1 for XHTML//EN"
+       "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent">
+    %HTMLlat1;
+-->
+
+<!ENTITY nbsp   "&#160;"> <!-- no-break space = non-breaking space,
+                                  U+00A0 ISOnum -->
+<!ENTITY iexcl  "&#161;"> <!-- inverted exclamation mark, U+00A1 ISOnum -->
+<!ENTITY cent   "&#162;"> <!-- cent sign, U+00A2 ISOnum -->
+<!ENTITY pound  "&#163;"> <!-- pound sign, U+00A3 ISOnum -->
+<!ENTITY curren "&#164;"> <!-- currency sign, U+00A4 ISOnum -->
+<!ENTITY yen    "&#165;"> <!-- yen sign = yuan sign, U+00A5 ISOnum -->
+<!ENTITY brvbar "&#166;"> <!-- broken bar = broken vertical bar,
+                                  U+00A6 ISOnum -->
+<!ENTITY sect   "&#167;"> <!-- section sign, U+00A7 ISOnum -->
+<!ENTITY uml    "&#168;"> <!-- diaeresis = spacing diaeresis,
+                                  U+00A8 ISOdia -->
+<!ENTITY copy   "&#169;"> <!-- copyright sign, U+00A9 ISOnum -->
+<!ENTITY ordf   "&#170;"> <!-- feminine ordinal indicator, U+00AA ISOnum -->
+<!ENTITY laquo  "&#171;"> <!-- left-pointing double angle quotation mark
+                                  = left pointing guillemet, U+00AB ISOnum -->
+<!ENTITY not    "&#172;"> <!-- not sign = angled dash,
+                                  U+00AC ISOnum -->
+<!ENTITY shy    "&#173;"> <!-- soft hyphen = discretionary hyphen,
+                                  U+00AD ISOnum -->
+<!ENTITY reg    "&#174;"> <!-- registered sign = registered trade mark sign,
+                                  U+00AE ISOnum -->
+<!ENTITY macr   "&#175;"> <!-- macron = spacing macron = overline
+                                  = APL overbar, U+00AF ISOdia -->
+<!ENTITY deg    "&#176;"> <!-- degree sign, U+00B0 ISOnum -->
+<!ENTITY plusmn "&#177;"> <!-- plus-minus sign = plus-or-minus sign,
+                                  U+00B1 ISOnum -->
+<!ENTITY sup2   "&#178;"> <!-- superscript two = superscript digit two
+                                  = squared, U+00B2 ISOnum -->
+<!ENTITY sup3   "&#179;"> <!-- superscript three = superscript digit three
+                                  = cubed, U+00B3 ISOnum -->
+<!ENTITY acute  "&#180;"> <!-- acute accent = spacing acute,
+                                  U+00B4 ISOdia -->
+<!ENTITY micro  "&#181;"> <!-- micro sign, U+00B5 ISOnum -->
+<!ENTITY para   "&#182;"> <!-- pilcrow sign = paragraph sign,
+                                  U+00B6 ISOnum -->
+<!ENTITY middot "&#183;"> <!-- middle dot = Georgian comma
+                                  = Greek middle dot, U+00B7 ISOnum -->
+<!ENTITY cedil  "&#184;"> <!-- cedilla = spacing cedilla, U+00B8 ISOdia -->
+<!ENTITY sup1   "&#185;"> <!-- superscript one = superscript digit one,
+                                  U+00B9 ISOnum -->
+<!ENTITY ordm   "&#186;"> <!-- masculine ordinal indicator,
+                                  U+00BA ISOnum -->
+<!ENTITY raquo  "&#187;"> <!-- right-pointing double angle quotation mark
+                                  = right pointing guillemet, U+00BB ISOnum -->
+<!ENTITY frac14 "&#188;"> <!-- vulgar fraction one quarter
+                                  = fraction one quarter, U+00BC ISOnum -->
+<!ENTITY frac12 "&#189;"> <!-- vulgar fraction one half
+                                  = fraction one half, U+00BD ISOnum -->
+<!ENTITY frac34 "&#190;"> <!-- vulgar fraction three quarters
+                                  = fraction three quarters, U+00BE ISOnum -->
+<!ENTITY iquest "&#191;"> <!-- inverted question mark
+                                  = turned question mark, U+00BF ISOnum -->
+<!ENTITY Agrave "&#192;"> <!-- latin capital letter A with grave
+                                  = latin capital letter A grave,
+                                  U+00C0 ISOlat1 -->
+<!ENTITY Aacute "&#193;"> <!-- latin capital letter A with acute,
+                                  U+00C1 ISOlat1 -->
+<!ENTITY Acirc  "&#194;"> <!-- latin capital letter A with circumflex,
+                                  U+00C2 ISOlat1 -->
+<!ENTITY Atilde "&#195;"> <!-- latin capital letter A with tilde,
+                                  U+00C3 ISOlat1 -->
+<!ENTITY Auml   "&#196;"> <!-- latin capital letter A with diaeresis,
+                                  U+00C4 ISOlat1 -->
+<!ENTITY Aring  "&#197;"> <!-- latin capital letter A with ring above
+                                  = latin capital letter A ring,
+                                  U+00C5 ISOlat1 -->
+<!ENTITY AElig  "&#198;"> <!-- latin capital letter AE
+                                  = latin capital ligature AE,
+                                  U+00C6 ISOlat1 -->
+<!ENTITY Ccedil "&#199;"> <!-- latin capital letter C with cedilla,
+                                  U+00C7 ISOlat1 -->
+<!ENTITY Egrave "&#200;"> <!-- latin capital letter E with grave,
+                                  U+00C8 ISOlat1 -->
+<!ENTITY Eacute "&#201;"> <!-- latin capital letter E with acute,
+                                  U+00C9 ISOlat1 -->
+<!ENTITY Ecirc  "&#202;"> <!-- latin capital letter E with circumflex,
+                                  U+00CA ISOlat1 -->
+<!ENTITY Euml   "&#203;"> <!-- latin capital letter E with diaeresis,
+                                  U+00CB ISOlat1 -->
+<!ENTITY Igrave "&#204;"> <!-- latin capital letter I with grave,
+                                  U+00CC ISOlat1 -->
+<!ENTITY Iacute "&#205;"> <!-- latin capital letter I with acute,
+                                  U+00CD ISOlat1 -->
+<!ENTITY Icirc  "&#206;"> <!-- latin capital letter I with circumflex,
+                                  U+00CE ISOlat1 -->
+<!ENTITY Iuml   "&#207;"> <!-- latin capital letter I with diaeresis,
+                                  U+00CF ISOlat1 -->
+<!ENTITY ETH    "&#208;"> <!-- latin capital letter ETH, U+00D0 ISOlat1 -->
+<!ENTITY Ntilde "&#209;"> <!-- latin capital letter N with tilde,
+                                  U+00D1 ISOlat1 -->
+<!ENTITY Ograve "&#210;"> <!-- latin capital letter O with grave,
+                                  U+00D2 ISOlat1 -->
+<!ENTITY Oacute "&#211;"> <!-- latin capital letter O with acute,
+                                  U+00D3 ISOlat1 -->
+<!ENTITY Ocirc  "&#212;"> <!-- latin capital letter O with circumflex,
+                                  U+00D4 ISOlat1 -->
+<!ENTITY Otilde "&#213;"> <!-- latin capital letter O with tilde,
+                                  U+00D5 ISOlat1 -->
+<!ENTITY Ouml   "&#214;"> <!-- latin capital letter O with diaeresis,
+                                  U+00D6 ISOlat1 -->
+<!ENTITY times  "&#215;"> <!-- multiplication sign, U+00D7 ISOnum -->
+<!ENTITY Oslash "&#216;"> <!-- latin capital letter O with stroke
+                                  = latin capital letter O slash,
+                                  U+00D8 ISOlat1 -->
+<!ENTITY Ugrave "&#217;"> <!-- latin capital letter U with grave,
+                                  U+00D9 ISOlat1 -->
+<!ENTITY Uacute "&#218;"> <!-- latin capital letter U with acute,
+                                  U+00DA ISOlat1 -->
+<!ENTITY Ucirc  "&#219;"> <!-- latin capital letter U with circumflex,
+                                  U+00DB ISOlat1 -->
+<!ENTITY Uuml   "&#220;"> <!-- latin capital letter U with diaeresis,
+                                  U+00DC ISOlat1 -->
+<!ENTITY Yacute "&#221;"> <!-- latin capital letter Y with acute,
+                                  U+00DD ISOlat1 -->
+<!ENTITY THORN  "&#222;"> <!-- latin capital letter THORN,
+                                  U+00DE ISOlat1 -->
+<!ENTITY szlig  "&#223;"> <!-- latin small letter sharp s = ess-zed,
+                                  U+00DF ISOlat1 -->
+<!ENTITY agrave "&#224;"> <!-- latin small letter a with grave
+                                  = latin small letter a grave,
+                                  U+00E0 ISOlat1 -->
+<!ENTITY aacute "&#225;"> <!-- latin small letter a with acute,
+                                  U+00E1 ISOlat1 -->
+<!ENTITY acirc  "&#226;"> <!-- latin small letter a with circumflex,
+                                  U+00E2 ISOlat1 -->
+<!ENTITY atilde "&#227;"> <!-- latin small letter a with tilde,
+                                  U+00E3 ISOlat1 -->
+<!ENTITY auml   "&#228;"> <!-- latin small letter a with diaeresis,
+                                  U+00E4 ISOlat1 -->
+<!ENTITY aring  "&#229;"> <!-- latin small letter a with ring above
+                                  = latin small letter a ring,
+                                  U+00E5 ISOlat1 -->
+<!ENTITY aelig  "&#230;"> <!-- latin small letter ae
+                                  = latin small ligature ae, U+00E6 ISOlat1 -->
+<!ENTITY ccedil "&#231;"> <!-- latin small letter c with cedilla,
+                                  U+00E7 ISOlat1 -->
+<!ENTITY egrave "&#232;"> <!-- latin small letter e with grave,
+                                  U+00E8 ISOlat1 -->
+<!ENTITY eacute "&#233;"> <!-- latin small letter e with acute,
+                                  U+00E9 ISOlat1 -->
+<!ENTITY ecirc  "&#234;"> <!-- latin small letter e with circumflex,
+                                  U+00EA ISOlat1 -->
+<!ENTITY euml   "&#235;"> <!-- latin small letter e with diaeresis,
+                                  U+00EB ISOlat1 -->
+<!ENTITY igrave "&#236;"> <!-- latin small letter i with grave,
+                                  U+00EC ISOlat1 -->
+<!ENTITY iacute "&#237;"> <!-- latin small letter i with acute,
+                                  U+00ED ISOlat1 -->
+<!ENTITY icirc  "&#238;"> <!-- latin small letter i with circumflex,
+                                  U+00EE ISOlat1 -->
+<!ENTITY iuml   "&#239;"> <!-- latin small letter i with diaeresis,
+                                  U+00EF ISOlat1 -->
+<!ENTITY eth    "&#240;"> <!-- latin small letter eth, U+00F0 ISOlat1 -->
+<!ENTITY ntilde "&#241;"> <!-- latin small letter n with tilde,
+                                  U+00F1 ISOlat1 -->
+<!ENTITY ograve "&#242;"> <!-- latin small letter o with grave,
+                                  U+00F2 ISOlat1 -->
+<!ENTITY oacute "&#243;"> <!-- latin small letter o with acute,
+                                  U+00F3 ISOlat1 -->
+<!ENTITY ocirc  "&#244;"> <!-- latin small letter o with circumflex,
+                                  U+00F4 ISOlat1 -->
+<!ENTITY otilde "&#245;"> <!-- latin small letter o with tilde,
+                                  U+00F5 ISOlat1 -->
+<!ENTITY ouml   "&#246;"> <!-- latin small letter o with diaeresis,
+                                  U+00F6 ISOlat1 -->
+<!ENTITY divide "&#247;"> <!-- division sign, U+00F7 ISOnum -->
+<!ENTITY oslash "&#248;"> <!-- latin small letter o with stroke,
+                                  = latin small letter o slash,
+                                  U+00F8 ISOlat1 -->
+<!ENTITY ugrave "&#249;"> <!-- latin small letter u with grave,
+                                  U+00F9 ISOlat1 -->
+<!ENTITY uacute "&#250;"> <!-- latin small letter u with acute,
+                                  U+00FA ISOlat1 -->
+<!ENTITY ucirc  "&#251;"> <!-- latin small letter u with circumflex,
+                                  U+00FB ISOlat1 -->
+<!ENTITY uuml   "&#252;"> <!-- latin small letter u with diaeresis,
+                                  U+00FC ISOlat1 -->
+<!ENTITY yacute "&#253;"> <!-- latin small letter y with acute,
+                                  U+00FD ISOlat1 -->
+<!ENTITY thorn  "&#254;"> <!-- latin small letter thorn,
+                                  U+00FE ISOlat1 -->
+<!ENTITY yuml   "&#255;"> <!-- latin small letter y with diaeresis,
+                                  U+00FF ISOlat1 -->

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/tck/src/test/resources/dtd/xhtml-special.ent
----------------------------------------------------------------------
diff --git a/mothballed/bdd/tck/src/test/resources/dtd/xhtml-special.ent b/mothballed/bdd/tck/src/test/resources/dtd/xhtml-special.ent
new file mode 100644
index 0000000..ca358b2
--- /dev/null
+++ b/mothballed/bdd/tck/src/test/resources/dtd/xhtml-special.ent
@@ -0,0 +1,80 @@
+<!-- Special characters for XHTML -->
+
+<!-- Character entity set. Typical invocation:
+     <!ENTITY % HTMLspecial PUBLIC
+        "-//W3C//ENTITIES Special for XHTML//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent">
+     %HTMLspecial;
+-->
+
+<!-- Portions (C) International Organization for Standardization 1986:
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+-->
+
+<!-- Relevant ISO entity set is given unless names are newly introduced.
+     New names (i.e., not in ISO 8879 list) do not clash with any
+     existing ISO 8879 entity names. ISO 10646 character numbers
+     are given for each character, in hex. values are decimal
+     conversions of the ISO 10646 values and refer to the document
+     character set. Names are Unicode names. 
+-->
+
+<!-- C0 Controls and Basic Latin -->
+<!ENTITY quot    "&#34;"> <!--  quotation mark, U+0022 ISOnum -->
+<!ENTITY amp     "&#38;#38;"> <!--  ampersand, U+0026 ISOnum -->
+<!ENTITY lt      "&#38;#60;"> <!--  less-than sign, U+003C ISOnum -->
+<!ENTITY gt      "&#62;"> <!--  greater-than sign, U+003E ISOnum -->
+<!ENTITY apos	 "&#39;"> <!--  apostrophe = APL quote, U+0027 ISOnum -->
+
+<!-- Latin Extended-A -->
+<!ENTITY OElig   "&#338;"> <!--  latin capital ligature OE,
+                                    U+0152 ISOlat2 -->
+<!ENTITY oelig   "&#339;"> <!--  latin small ligature oe, U+0153 ISOlat2 -->
+<!-- ligature is a misnomer, this is a separate character in some languages -->
+<!ENTITY Scaron  "&#352;"> <!--  latin capital letter S with caron,
+                                    U+0160 ISOlat2 -->
+<!ENTITY scaron  "&#353;"> <!--  latin small letter s with caron,
+                                    U+0161 ISOlat2 -->
+<!ENTITY Yuml    "&#376;"> <!--  latin capital letter Y with diaeresis,
+                                    U+0178 ISOlat2 -->
+
+<!-- Spacing Modifier Letters -->
+<!ENTITY circ    "&#710;"> <!--  modifier letter circumflex accent,
+                                    U+02C6 ISOpub -->
+<!ENTITY tilde   "&#732;"> <!--  small tilde, U+02DC ISOdia -->
+
+<!-- General Punctuation -->
+<!ENTITY ensp    "&#8194;"> <!-- en space, U+2002 ISOpub -->
+<!ENTITY emsp    "&#8195;"> <!-- em space, U+2003 ISOpub -->
+<!ENTITY thinsp  "&#8201;"> <!-- thin space, U+2009 ISOpub -->
+<!ENTITY zwnj    "&#8204;"> <!-- zero width non-joiner,
+                                    U+200C NEW RFC 2070 -->
+<!ENTITY zwj     "&#8205;"> <!-- zero width joiner, U+200D NEW RFC 2070 -->
+<!ENTITY lrm     "&#8206;"> <!-- left-to-right mark, U+200E NEW RFC 2070 -->
+<!ENTITY rlm     "&#8207;"> <!-- right-to-left mark, U+200F NEW RFC 2070 -->
+<!ENTITY ndash   "&#8211;"> <!-- en dash, U+2013 ISOpub -->
+<!ENTITY mdash   "&#8212;"> <!-- em dash, U+2014 ISOpub -->
+<!ENTITY lsquo   "&#8216;"> <!-- left single quotation mark,
+                                    U+2018 ISOnum -->
+<!ENTITY rsquo   "&#8217;"> <!-- right single quotation mark,
+                                    U+2019 ISOnum -->
+<!ENTITY sbquo   "&#8218;"> <!-- single low-9 quotation mark, U+201A NEW -->
+<!ENTITY ldquo   "&#8220;"> <!-- left double quotation mark,
+                                    U+201C ISOnum -->
+<!ENTITY rdquo   "&#8221;"> <!-- right double quotation mark,
+                                    U+201D ISOnum -->
+<!ENTITY bdquo   "&#8222;"> <!-- double low-9 quotation mark, U+201E NEW -->
+<!ENTITY dagger  "&#8224;"> <!-- dagger, U+2020 ISOpub -->
+<!ENTITY Dagger  "&#8225;"> <!-- double dagger, U+2021 ISOpub -->
+<!ENTITY permil  "&#8240;"> <!-- per mille sign, U+2030 ISOtech -->
+<!ENTITY lsaquo  "&#8249;"> <!-- single left-pointing angle quotation mark,
+                                    U+2039 ISO proposed -->
+<!-- lsaquo is proposed but not yet ISO standardized -->
+<!ENTITY rsaquo  "&#8250;"> <!-- single right-pointing angle quotation mark,
+                                    U+203A ISO proposed -->
+<!-- rsaquo is proposed but not yet ISO standardized -->
+
+<!-- Currency Symbols -->
+<!ENTITY euro   "&#8364;"> <!--  euro sign, U+20AC NEW -->

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/mothballed/bdd/tck/src/test/resources/dtd/xhtml-symbol.ent
----------------------------------------------------------------------
diff --git a/mothballed/bdd/tck/src/test/resources/dtd/xhtml-symbol.ent b/mothballed/bdd/tck/src/test/resources/dtd/xhtml-symbol.ent
new file mode 100644
index 0000000..63c2abf
--- /dev/null
+++ b/mothballed/bdd/tck/src/test/resources/dtd/xhtml-symbol.ent
@@ -0,0 +1,237 @@
+<!-- Mathematical, Greek and Symbolic characters for XHTML -->
+
+<!-- Character entity set. Typical invocation:
+     <!ENTITY % HTMLsymbol PUBLIC
+        "-//W3C//ENTITIES Symbols for XHTML//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent">
+     %HTMLsymbol;
+-->
+
+<!-- Portions (C) International Organization for Standardization 1986:
+     Permission to copy in any form is granted for use with
+     conforming SGML systems and applications as defined in
+     ISO 8879, provided this notice is included in all copies.
+-->
+
+<!-- Relevant ISO entity set is given unless names are newly introduced.
+     New names (i.e., not in ISO 8879 list) do not clash with any
+     existing ISO 8879 entity names. ISO 10646 character numbers
+     are given for each character, in hex. values are decimal
+     conversions of the ISO 10646 values and refer to the document
+     character set. Names are Unicode names. 
+-->
+
+<!-- Latin Extended-B -->
+<!ENTITY fnof     "&#402;"> <!-- latin small letter f with hook = function
+                                    = florin, U+0192 ISOtech -->
+
+<!-- Greek -->
+<!ENTITY Alpha    "&#913;"> <!-- greek capital letter alpha, U+0391 -->
+<!ENTITY Beta     "&#914;"> <!-- greek capital letter beta, U+0392 -->
+<!ENTITY Gamma    "&#915;"> <!-- greek capital letter gamma,
+                                    U+0393 ISOgrk3 -->
+<!ENTITY Delta    "&#916;"> <!-- greek capital letter delta,
+                                    U+0394 ISOgrk3 -->
+<!ENTITY Epsilon  "&#917;"> <!-- greek capital letter epsilon, U+0395 -->
+<!ENTITY Zeta     "&#918;"> <!-- greek capital letter zeta, U+0396 -->
+<!ENTITY Eta      "&#919;"> <!-- greek capital letter eta, U+0397 -->
+<!ENTITY Theta    "&#920;"> <!-- greek capital letter theta,
+                                    U+0398 ISOgrk3 -->
+<!ENTITY Iota     "&#921;"> <!-- greek capital letter iota, U+0399 -->
+<!ENTITY Kappa    "&#922;"> <!-- greek capital letter kappa, U+039A -->
+<!ENTITY Lambda   "&#923;"> <!-- greek capital letter lamda,
+                                    U+039B ISOgrk3 -->
+<!ENTITY Mu       "&#924;"> <!-- greek capital letter mu, U+039C -->
+<!ENTITY Nu       "&#925;"> <!-- greek capital letter nu, U+039D -->
+<!ENTITY Xi       "&#926;"> <!-- greek capital letter xi, U+039E ISOgrk3 -->
+<!ENTITY Omicron  "&#927;"> <!-- greek capital letter omicron, U+039F -->
+<!ENTITY Pi       "&#928;"> <!-- greek capital letter pi, U+03A0 ISOgrk3 -->
+<!ENTITY Rho      "&#929;"> <!-- greek capital letter rho, U+03A1 -->
+<!-- there is no Sigmaf, and no U+03A2 character either -->
+<!ENTITY Sigma    "&#931;"> <!-- greek capital letter sigma,
+                                    U+03A3 ISOgrk3 -->
+<!ENTITY Tau      "&#932;"> <!-- greek capital letter tau, U+03A4 -->
+<!ENTITY Upsilon  "&#933;"> <!-- greek capital letter upsilon,
+                                    U+03A5 ISOgrk3 -->
+<!ENTITY Phi      "&#934;"> <!-- greek capital letter phi,
+                                    U+03A6 ISOgrk3 -->
+<!ENTITY Chi      "&#935;"> <!-- greek capital letter chi, U+03A7 -->
+<!ENTITY Psi      "&#936;"> <!-- greek capital letter psi,
+                                    U+03A8 ISOgrk3 -->
+<!ENTITY Omega    "&#937;"> <!-- greek capital letter omega,
+                                    U+03A9 ISOgrk3 -->
+
+<!ENTITY alpha    "&#945;"> <!-- greek small letter alpha,
+                                    U+03B1 ISOgrk3 -->
+<!ENTITY beta     "&#946;"> <!-- greek small letter beta, U+03B2 ISOgrk3 -->
+<!ENTITY gamma    "&#947;"> <!-- greek small letter gamma,
+                                    U+03B3 ISOgrk3 -->
+<!ENTITY delta    "&#948;"> <!-- greek small letter delta,
+                                    U+03B4 ISOgrk3 -->
+<!ENTITY epsilon  "&#949;"> <!-- greek small letter epsilon,
+                                    U+03B5 ISOgrk3 -->
+<!ENTITY zeta     "&#950;"> <!-- greek small letter zeta, U+03B6 ISOgrk3 -->
+<!ENTITY eta      "&#951;"> <!-- greek small letter eta, U+03B7 ISOgrk3 -->
+<!ENTITY theta    "&#952;"> <!-- greek small letter theta,
+                                    U+03B8 ISOgrk3 -->
+<!ENTITY iota     "&#953;"> <!-- greek small letter iota, U+03B9 ISOgrk3 -->
+<!ENTITY kappa    "&#954;"> <!-- greek small letter kappa,
+                                    U+03BA ISOgrk3 -->
+<!ENTITY lambda   "&#955;"> <!-- greek small letter lamda,
+                                    U+03BB ISOgrk3 -->
+<!ENTITY mu       "&#956;"> <!-- greek small letter mu, U+03BC ISOgrk3 -->
+<!ENTITY nu       "&#957;"> <!-- greek small letter nu, U+03BD ISOgrk3 -->
+<!ENTITY xi       "&#958;"> <!-- greek small letter xi, U+03BE ISOgrk3 -->
+<!ENTITY omicron  "&#959;"> <!-- greek small letter omicron, U+03BF NEW -->
+<!ENTITY pi       "&#960;"> <!-- greek small letter pi, U+03C0 ISOgrk3 -->
+<!ENTITY rho      "&#961;"> <!-- greek small letter rho, U+03C1 ISOgrk3 -->
+<!ENTITY sigmaf   "&#962;"> <!-- greek small letter final sigma,
+                                    U+03C2 ISOgrk3 -->
+<!ENTITY sigma    "&#963;"> <!-- greek small letter sigma,
+                                    U+03C3 ISOgrk3 -->
+<!ENTITY tau      "&#964;"> <!-- greek small letter tau, U+03C4 ISOgrk3 -->
+<!ENTITY upsilon  "&#965;"> <!-- greek small letter upsilon,
+                                    U+03C5 ISOgrk3 -->
+<!ENTITY phi      "&#966;"> <!-- greek small letter phi, U+03C6 ISOgrk3 -->
+<!ENTITY chi      "&#967;"> <!-- greek small letter chi, U+03C7 ISOgrk3 -->
+<!ENTITY psi      "&#968;"> <!-- greek small letter psi, U+03C8 ISOgrk3 -->
+<!ENTITY omega    "&#969;"> <!-- greek small letter omega,
+                                    U+03C9 ISOgrk3 -->
+<!ENTITY thetasym "&#977;"> <!-- greek theta symbol,
+                                    U+03D1 NEW -->
+<!ENTITY upsih    "&#978;"> <!-- greek upsilon with hook symbol,
+                                    U+03D2 NEW -->
+<!ENTITY piv      "&#982;"> <!-- greek pi symbol, U+03D6 ISOgrk3 -->
+
+<!-- General Punctuation -->
+<!ENTITY bull     "&#8226;"> <!-- bullet = black small circle,
+                                     U+2022 ISOpub  -->
+<!-- bullet is NOT the same as bullet operator, U+2219 -->
+<!ENTITY hellip   "&#8230;"> <!-- horizontal ellipsis = three dot leader,
+                                     U+2026 ISOpub  -->
+<!ENTITY prime    "&#8242;"> <!-- prime = minutes = feet, U+2032 ISOtech -->
+<!ENTITY Prime    "&#8243;"> <!-- double prime = seconds = inches,
+                                     U+2033 ISOtech -->
+<!ENTITY oline    "&#8254;"> <!-- overline = spacing overscore,
+                                     U+203E NEW -->
+<!ENTITY frasl    "&#8260;"> <!-- fraction slash, U+2044 NEW -->
+
+<!-- Letterlike Symbols -->
+<!ENTITY weierp   "&#8472;"> <!-- script capital P = power set
+                                     = Weierstrass p, U+2118 ISOamso -->
+<!ENTITY image    "&#8465;"> <!-- black-letter capital I = imaginary part,
+                                     U+2111 ISOamso -->
+<!ENTITY real     "&#8476;"> <!-- black-letter capital R = real part symbol,
+                                     U+211C ISOamso -->
+<!ENTITY trade    "&#8482;"> <!-- trade mark sign, U+2122 ISOnum -->
+<!ENTITY alefsym  "&#8501;"> <!-- alef symbol = first transfinite cardinal,
+                                     U+2135 NEW -->
+<!-- alef symbol is NOT the same as hebrew letter alef,
+     U+05D0 although the same glyph could be used to depict both characters -->
+
+<!-- Arrows -->
+<!ENTITY larr     "&#8592;"> <!-- leftwards arrow, U+2190 ISOnum -->
+<!ENTITY uarr     "&#8593;"> <!-- upwards arrow, U+2191 ISOnum-->
+<!ENTITY rarr     "&#8594;"> <!-- rightwards arrow, U+2192 ISOnum -->
+<!ENTITY darr     "&#8595;"> <!-- downwards arrow, U+2193 ISOnum -->
+<!ENTITY harr     "&#8596;"> <!-- left right arrow, U+2194 ISOamsa -->
+<!ENTITY crarr    "&#8629;"> <!-- downwards arrow with corner leftwards
+                                     = carriage return, U+21B5 NEW -->
+<!ENTITY lArr     "&#8656;"> <!-- leftwards double arrow, U+21D0 ISOtech -->
+<!-- Unicode does not say that lArr is the same as the 'is implied by' arrow
+    but also does not have any other character for that function. So lArr can
+    be used for 'is implied by' as ISOtech suggests -->
+<!ENTITY uArr     "&#8657;"> <!-- upwards double arrow, U+21D1 ISOamsa -->
+<!ENTITY rArr     "&#8658;"> <!-- rightwards double arrow,
+                                     U+21D2 ISOtech -->
+<!-- Unicode does not say this is the 'implies' character but does not have 
+     another character with this function so rArr can be used for 'implies'
+     as ISOtech suggests -->
+<!ENTITY dArr     "&#8659;"> <!-- downwards double arrow, U+21D3 ISOamsa -->
+<!ENTITY hArr     "&#8660;"> <!-- left right double arrow,
+                                     U+21D4 ISOamsa -->
+
+<!-- Mathematical Operators -->
+<!ENTITY forall   "&#8704;"> <!-- for all, U+2200 ISOtech -->
+<!ENTITY part     "&#8706;"> <!-- partial differential, U+2202 ISOtech  -->
+<!ENTITY exist    "&#8707;"> <!-- there exists, U+2203 ISOtech -->
+<!ENTITY empty    "&#8709;"> <!-- empty set = null set, U+2205 ISOamso -->
+<!ENTITY nabla    "&#8711;"> <!-- nabla = backward difference,
+                                     U+2207 ISOtech -->
+<!ENTITY isin     "&#8712;"> <!-- element of, U+2208 ISOtech -->
+<!ENTITY notin    "&#8713;"> <!-- not an element of, U+2209 ISOtech -->
+<!ENTITY ni       "&#8715;"> <!-- contains as member, U+220B ISOtech -->
+<!ENTITY prod     "&#8719;"> <!-- n-ary product = product sign,
+                                     U+220F ISOamsb -->
+<!-- prod is NOT the same character as U+03A0 'greek capital letter pi' though
+     the same glyph might be used for both -->
+<!ENTITY sum      "&#8721;"> <!-- n-ary summation, U+2211 ISOamsb -->
+<!-- sum is NOT the same character as U+03A3 'greek capital letter sigma'
+     though the same glyph might be used for both -->
+<!ENTITY minus    "&#8722;"> <!-- minus sign, U+2212 ISOtech -->
+<!ENTITY lowast   "&#8727;"> <!-- asterisk operator, U+2217 ISOtech -->
+<!ENTITY radic    "&#8730;"> <!-- square root = radical sign,
+                                     U+221A ISOtech -->
+<!ENTITY prop     "&#8733;"> <!-- proportional to, U+221D ISOtech -->
+<!ENTITY infin    "&#8734;"> <!-- infinity, U+221E ISOtech -->
+<!ENTITY ang      "&#8736;"> <!-- angle, U+2220 ISOamso -->
+<!ENTITY and      "&#8743;"> <!-- logical and = wedge, U+2227 ISOtech -->
+<!ENTITY or       "&#8744;"> <!-- logical or = vee, U+2228 ISOtech -->
+<!ENTITY cap      "&#8745;"> <!-- intersection = cap, U+2229 ISOtech -->
+<!ENTITY cup      "&#8746;"> <!-- union = cup, U+222A ISOtech -->
+<!ENTITY int      "&#8747;"> <!-- integral, U+222B ISOtech -->
+<!ENTITY there4   "&#8756;"> <!-- therefore, U+2234 ISOtech -->
+<!ENTITY sim      "&#8764;"> <!-- tilde operator = varies with = similar to,
+                                     U+223C ISOtech -->
+<!-- tilde operator is NOT the same character as the tilde, U+007E,
+     although the same glyph might be used to represent both  -->
+<!ENTITY cong     "&#8773;"> <!-- approximately equal to, U+2245 ISOtech -->
+<!ENTITY asymp    "&#8776;"> <!-- almost equal to = asymptotic to,
+                                     U+2248 ISOamsr -->
+<!ENTITY ne       "&#8800;"> <!-- not equal to, U+2260 ISOtech -->
+<!ENTITY equiv    "&#8801;"> <!-- identical to, U+2261 ISOtech -->
+<!ENTITY le       "&#8804;"> <!-- less-than or equal to, U+2264 ISOtech -->
+<!ENTITY ge       "&#8805;"> <!-- greater-than or equal to,
+                                     U+2265 ISOtech -->
+<!ENTITY sub      "&#8834;"> <!-- subset of, U+2282 ISOtech -->
+<!ENTITY sup      "&#8835;"> <!-- superset of, U+2283 ISOtech -->
+<!ENTITY nsub     "&#8836;"> <!-- not a subset of, U+2284 ISOamsn -->
+<!ENTITY sube     "&#8838;"> <!-- subset of or equal to, U+2286 ISOtech -->
+<!ENTITY supe     "&#8839;"> <!-- superset of or equal to,
+                                     U+2287 ISOtech -->
+<!ENTITY oplus    "&#8853;"> <!-- circled plus = direct sum,
+                                     U+2295 ISOamsb -->
+<!ENTITY otimes   "&#8855;"> <!-- circled times = vector product,
+                                     U+2297 ISOamsb -->
+<!ENTITY perp     "&#8869;"> <!-- up tack = orthogonal to = perpendicular,
+                                     U+22A5 ISOtech -->
+<!ENTITY sdot     "&#8901;"> <!-- dot operator, U+22C5 ISOamsb -->
+<!-- dot operator is NOT the same character as U+00B7 middle dot -->
+
+<!-- Miscellaneous Technical -->
+<!ENTITY lceil    "&#8968;"> <!-- left ceiling = APL upstile,
+                                     U+2308 ISOamsc  -->
+<!ENTITY rceil    "&#8969;"> <!-- right ceiling, U+2309 ISOamsc  -->
+<!ENTITY lfloor   "&#8970;"> <!-- left floor = APL downstile,
+                                     U+230A ISOamsc  -->
+<!ENTITY rfloor   "&#8971;"> <!-- right floor, U+230B ISOamsc  -->
+<!ENTITY lang     "&#9001;"> <!-- left-pointing angle bracket = bra,
+                                     U+2329 ISOtech -->
+<!-- lang is NOT the same character as U+003C 'less than sign' 
+     or U+2039 'single left-pointing angle quotation mark' -->
+<!ENTITY rang     "&#9002;"> <!-- right-pointing angle bracket = ket,
+                                     U+232A ISOtech -->
+<!-- rang is NOT the same character as U+003E 'greater than sign' 
+     or U+203A 'single right-pointing angle quotation mark' -->
+
+<!-- Geometric Shapes -->
+<!ENTITY loz      "&#9674;"> <!-- lozenge, U+25CA ISOpub -->
+
+<!-- Miscellaneous Symbols -->
+<!ENTITY spades   "&#9824;"> <!-- black spade suit, U+2660 ISOpub -->
+<!-- black here seems to mean filled as opposed to hollow -->
+<!ENTITY clubs    "&#9827;"> <!-- black club suit = shamrock,
+                                     U+2663 ISOpub -->
+<!ENTITY hearts   "&#9829;"> <!-- black heart suit = valentine,
+                                     U+2665 ISOpub -->
+<!ENTITY diams    "&#9830;"> <!-- black diamond suit, U+2666 ISOpub -->


[17/19] ISIS-463: mothballing BDD viewer

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/GetActionParameterDefault.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/GetActionParameterDefault.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/GetActionParameterDefault.java
deleted file mode 100644
index f440d1b..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/GetActionParameterDefault.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
-import org.apache.isis.viewer.bdd.common.CellBinding;
-import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
-import org.apache.isis.viewer.bdd.common.ScenarioCell;
-
-public class GetActionParameterDefault extends PerformAbstractTypeParams {
-
-    private ObjectAdapter result;
-
-    public GetActionParameterDefault(final Perform.Mode mode) {
-        super("get action parameter default", Type.ACTION, NumParameters.ONE, mode);
-    }
-
-    @Override
-    public void doHandle(final PerformContext performContext) throws ScenarioBoundValueException {
-
-        final ObjectAdapter onAdapter = performContext.getOnAdapter();
-        final ObjectMember nakedObjectMember = performContext.getObjectMember();
-        final CellBinding arg0Binding = performContext.getPeer().getArg0Binding();
-        final ScenarioCell arg0Cell = arg0Binding.getCurrentCell();
-        int requestedParamNum = -1;
-        try {
-            requestedParamNum = Integer.valueOf(arg0Cell.getText());
-        } catch (final NumberFormatException ex) {
-            throw ScenarioBoundValueException.current(arg0Binding, ex.getMessage());
-        }
-
-        final ObjectAction noa = (ObjectAction) nakedObjectMember;
-        final int parameterCount = noa.getParameterCount();
-        if (requestedParamNum < 0 || requestedParamNum > parameterCount - 1) {
-            throw ScenarioBoundValueException.current(arg0Binding, "(must be between 0 and " + (parameterCount - 1) + ")");
-        }
-
-        final ObjectAdapter[] defaults = noa.getDefaults(onAdapter);
-        result = defaults[requestedParamNum];
-    }
-
-    @Override
-    public ObjectAdapter getResult() {
-        return result;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/GetCollection.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/GetCollection.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/GetCollection.java
deleted file mode 100644
index 47a8282..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/GetCollection.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
-import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
-
-public class GetCollection extends PerformAbstractTypeParams {
-
-    private ObjectAdapter result;
-
-    public GetCollection(final Perform.Mode mode) {
-        super("get collection", Type.COLLECTION, NumParameters.ZERO, mode);
-    }
-
-    @Override
-    public void doHandle(final PerformContext performContext) {
-
-        final ObjectAdapter onAdapter = performContext.getOnAdapter();
-        final ObjectMember nakedObjectMember = performContext.getObjectMember();
-
-        final OneToManyAssociation otma = (OneToManyAssociation) nakedObjectMember;
-
-        result = otma.get(onAdapter);
-    }
-
-    @Override
-    public ObjectAdapter getResult() {
-        return result;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/GetProperty.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/GetProperty.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/GetProperty.java
deleted file mode 100644
index f0cc55e..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/GetProperty.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
-import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
-
-public class GetProperty extends PerformAbstractTypeParams {
-
-    private ObjectAdapter result;
-
-    public GetProperty(final Perform.Mode mode) {
-        super("get property", Type.PROPERTY, NumParameters.ZERO, mode);
-    }
-
-    @Override
-    public void doHandle(final PerformContext performContext) {
-
-        final ObjectAdapter onAdapter = performContext.getOnAdapter();
-        final ObjectMember nakedObjectMember = performContext.getObjectMember();
-
-        final OneToOneAssociation otoa = (OneToOneAssociation) nakedObjectMember;
-
-        result = otoa.get(onAdapter);
-    }
-
-    @Override
-    public ObjectAdapter getResult() {
-        return result;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/GetPropertyChoices.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/GetPropertyChoices.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/GetPropertyChoices.java
deleted file mode 100644
index e901ccc..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/GetPropertyChoices.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
-import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
-
-public class GetPropertyChoices extends PerformAbstractTypeParams {
-
-    private ObjectAdapter result;
-
-    public GetPropertyChoices(final Perform.Mode mode) {
-        super("get property choices", Type.PROPERTY, NumParameters.ZERO, mode);
-    }
-
-    @Override
-    public void doHandle(final PerformContext performContext) {
-
-        final ObjectAdapter onAdapter = performContext.getOnAdapter();
-        final ObjectMember nakedObjectMember = performContext.getObjectMember();
-
-        final OneToOneAssociation otoa = (OneToOneAssociation) nakedObjectMember;
-
-        result = performContext.getPeer().toAdaptedListOfPojos(otoa.getChoices(onAdapter));
-    }
-
-    @Override
-    public ObjectAdapter getResult() {
-        return result;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/GetPropertyDefault.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/GetPropertyDefault.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/GetPropertyDefault.java
deleted file mode 100644
index 2766e41..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/GetPropertyDefault.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
-import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
-
-public class GetPropertyDefault extends PerformAbstractTypeParams {
-
-    private ObjectAdapter result;
-
-    public GetPropertyDefault(final Perform.Mode mode) {
-        super("get property default", Type.PROPERTY, NumParameters.ZERO, mode);
-    }
-
-    @Override
-    public void doHandle(final PerformContext performContext) {
-
-        final ObjectAdapter onAdapter = performContext.getOnAdapter();
-        final ObjectMember nakedObjectMember = performContext.getObjectMember();
-
-        final OneToOneAssociation otoa = (OneToOneAssociation) nakedObjectMember;
-
-        // TODO: the OTOA interface is wrong, should be declared as returning a
-        // NakedObject
-        // (which is indeed what the implementation does)
-        result = otoa.getDefault(onAdapter);
-    }
-
-    @Override
-    public ObjectAdapter getResult() {
-        return result;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/InvokeAction.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/InvokeAction.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/InvokeAction.java
deleted file mode 100644
index c3c7fe6..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/InvokeAction.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform;
-
-import java.util.List;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.consent.Consent;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
-import org.apache.isis.viewer.bdd.common.CellBinding;
-import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
-import org.apache.isis.viewer.bdd.common.ScenarioCell;
-
-public class InvokeAction extends PerformAbstractTypeParams {
-
-    private ObjectAdapter result;
-
-    public InvokeAction(final Perform.Mode mode) {
-        super("invoke action", Type.ACTION, NumParameters.UNLIMITED, mode);
-    }
-
-    @Override
-    public void doHandle(final PerformContext performContext) throws ScenarioBoundValueException {
-
-        final ObjectAdapter onAdapter = performContext.getOnAdapter();
-        final ObjectMember objectMember = performContext.getObjectMember();
-        final CellBinding onMemberBinding = performContext.getPeer().getOnMemberBinding();
-        final List<ScenarioCell> argumentCells = performContext.getArgumentCells();
-
-        final ObjectAction objectAction = (ObjectAction) objectMember;
-
-        final int parameterCount = objectAction.getParameterCount();
-        final boolean isContributedOneArgAction = objectAction.isContributed() && parameterCount == 1;
-
-        ObjectAdapter[] proposedArguments;
-        if (!isContributedOneArgAction) {
-
-            // lookup arguments
-            proposedArguments = performContext.getPeer().getAdapters(onAdapter, objectAction, onMemberBinding, argumentCells);
-
-            // validate arguments
-            final Consent argSetValid = objectAction.isProposedArgumentSetValid(onAdapter, proposedArguments);
-            if (argSetValid.isVetoed()) {
-                throw ScenarioBoundValueException.current(onMemberBinding, argSetValid.getReason());
-            }
-        } else {
-            proposedArguments = new ObjectAdapter[] { onAdapter };
-        }
-
-        // execute
-        result = objectAction.execute(onAdapter, proposedArguments);
-
-        // all OK.
-    }
-
-    @Override
-    public ObjectAdapter getResult() {
-        return result;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/Perform.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/Perform.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/Perform.java
deleted file mode 100644
index 10a1c7d..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/Perform.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
-
-public interface Perform {
-
-    public static enum Mode {
-        SETUP, TEST
-    }
-
-    String getKey();
-
-    void perform(PerformContext performContext) throws ScenarioBoundValueException;
-
-    ObjectAdapter getResult();
-
-    boolean requiresMember();
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/PerformAbstract.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/PerformAbstract.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/PerformAbstract.java
deleted file mode 100644
index a821df6..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/PerformAbstract.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform;
-
-import org.apache.isis.core.commons.authentication.AuthenticationSession;
-import org.apache.isis.core.runtime.system.context.IsisContext;
-
-public abstract class PerformAbstract implements Perform {
-
-    private final String key;
-    private final Perform.Mode mode;
-
-    public PerformAbstract(final String key, final Perform.Mode mode) {
-        this.key = key;
-        this.mode = mode;
-    }
-
-    @Override
-    public String getKey() {
-        return key;
-    }
-
-    protected Perform.Mode getMode() {
-        return mode;
-    }
-
-    protected AuthenticationSession getSession() {
-        return IsisContext.getAuthenticationSession();
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/PerformAbstractTypeParams.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/PerformAbstractTypeParams.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/PerformAbstractTypeParams.java
deleted file mode 100644
index 2e0d1fa..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/PerformAbstractTypeParams.java
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform;
-
-import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
-import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
-import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
-import org.apache.isis.viewer.bdd.common.CellBinding;
-import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
-import org.apache.isis.viewer.bdd.common.ScenarioCell;
-
-public abstract class PerformAbstractTypeParams extends PerformAbstract {
-
-    protected static enum Type {
-        PROPERTY(true) {
-            @Override
-            String ensureMemberIsOfType(final ObjectMember m) {
-                return m instanceof OneToOneAssociation ? null : "(not a property)";
-            }
-        },
-        COLLECTION(true) {
-            @Override
-            String ensureMemberIsOfType(final ObjectMember m) {
-                return m instanceof OneToManyAssociation ? null : "(not a collection)";
-            }
-        },
-        ACTION(true) {
-            @Override
-            String ensureMemberIsOfType(final ObjectMember m) {
-                return m instanceof ObjectAction ? null : "(not an action)";
-            }
-        },
-        OBJECT(false) {
-            @Override
-            String ensureMemberIsOfType(final ObjectMember m) {
-                return m != null ? "(not required)" : null;
-            }
-        };
-        // public void ensureMemberIsOfType(
-        // final NakedObjectMember nakedObjectMember,
-        // final StoryCell onMemberCell) throws StoryFailureException {
-        // final String msg = ensureMemberIsOfType(nakedObjectMember);
-        // if (msg != null) {
-        // throw new StoryFailureException(onMemberCell, msg);
-        // }
-        // }
-
-        abstract String ensureMemberIsOfType(ObjectMember m);
-
-        private final boolean representsMember;
-
-        private Type(final boolean representsMember) {
-            this.representsMember = representsMember;
-        }
-
-        public boolean representsMember() {
-            return representsMember;
-        }
-    }
-
-    protected static enum NumParameters {
-        ZERO, ONE, UNLIMITED;
-    }
-
-    private final Type type;
-    private final NumParameters numParameters;
-
-    public PerformAbstractTypeParams(final String key, final Type type, final NumParameters numParameters, final Perform.Mode mode) {
-        super(key, mode);
-        this.type = type;
-        this.numParameters = numParameters;
-    }
-
-    @Override
-    public boolean requiresMember() {
-        return type.representsMember();
-    }
-
-    /**
-     * Can be overridden, but provides basic checking that member is of correct
-     * type and, if taking {@link NumParameters#ZERO zero} or
-     * {@link NumParameters#ONE one} parameter, that the correct number of
-     * actual arguments match.
-     */
-    @Override
-    public void perform(final PerformContext performContext) throws ScenarioBoundValueException {
-
-        final CellBinding onMemberBinding = performContext.getPeer().getOnMemberBinding();
-        final ScenarioCell onMemberCell = onMemberBinding.getCurrentCell();
-
-        final String reason = type.ensureMemberIsOfType(performContext.getObjectMember());
-        if (reason != null) {
-            throw ScenarioBoundValueException.current(onMemberBinding, reason);
-        }
-
-        if (type.representsMember()) {
-
-            if (getMode() == Perform.Mode.TEST) {
-
-                performContext.ensureAvailableForDeploymentType(onMemberBinding, onMemberCell);
-
-                performContext.ensureVisible(onMemberBinding, onMemberCell);
-                performContext.ensureUsable(onMemberBinding, onMemberCell);
-            }
-
-            // validate we have correct number of parameters if zero or one.
-            final int numArgs = performContext.getArgumentCells().size();
-
-            // don't do these two checks, because there could be additional
-            // cells due to previous or subsequent rows in the table
-            // (with the author keeping this 'tidy')
-
-            // if (numParameters == NumParameters.ZERO && length > 0) {
-            // ... "(no arguments required)"
-            // }
-            // if (numParameters == NumParameters.ONE && length > 1) {
-            // ... "(need just 1 argument)"
-            // }
-
-            // okay to do this check, though
-            if (numParameters == NumParameters.ONE && numArgs < 1) {
-                throw ScenarioBoundValueException.current(onMemberBinding, "(need one argument)");
-            }
-        }
-
-        doHandle(performContext);
-    }
-
-    /**
-     * Hook method that does nothing; should be overridden if
-     * {@link #perform(PerformContextForFitNesse) handle(...)} method has not
-     * been.
-     */
-    protected void doHandle(final PerformContext performContext) throws ScenarioBoundValueException {
-        // does nothing
-    }
-
-    // /**
-    // * Convenience; delegates to
-    // * {@link Type#ensureMemberIsOfType(NakedObjectMember)} and downcasts.
-    // */
-    // protected OneToOneAssociation ensureMemberIsProperty(
-    // final NakedObjectMember nakedObjectMember,
-    // final StoryCell usingMemberCell) throws StoryFailureException {
-    // type.ensureMemberIsOfType(nakedObjectMember, usingMemberCell);
-    // return (OneToOneAssociation) nakedObjectMember;
-    // }
-    //
-    // /**
-    // * Convenience; delegates to
-    // * {@link Type#ensureMemberIsOfType(NakedObjectMember)} and downcasts.
-    // */
-    // protected OneToManyAssociation ensureMemberIsCollection(
-    // final NakedObjectMember nakedObjectMember,
-    // final StoryCell usingMemberCell) throws StoryFailureException {
-    // type.ensureMemberIsOfType(nakedObjectMember, usingMemberCell);
-    // return (OneToManyAssociation) nakedObjectMember;
-    // }
-    //
-    // /**
-    // * Convenience; delegates to
-    // * {@link Type#ensureMemberIsOfType(NakedObjectMember)} and downcasts.
-    // */
-    // protected NakedObjectAction ensureMemberIsAction(
-    // final NakedObjectMember nakedObjectMember,
-    // final StoryCell usingMemberCell) throws StoryFailureException {
-    // type.ensureMemberIsOfType(nakedObjectMember, usingMemberCell);
-    // return (NakedObjectAction) nakedObjectMember;
-    // }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/PerformContext.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/PerformContext.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/PerformContext.java
deleted file mode 100644
index e1679d5..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/PerformContext.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform;
-
-import java.util.List;
-
-import org.apache.isis.applib.annotation.Where;
-import org.apache.isis.core.commons.authentication.AuthenticationSession;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.consent.Consent;
-import org.apache.isis.core.metamodel.facets.actions.exploration.ExplorationFacet;
-import org.apache.isis.core.metamodel.facets.actions.prototype.PrototypeFacet;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
-import org.apache.isis.core.runtime.system.DeploymentType;
-import org.apache.isis.viewer.bdd.common.CellBinding;
-import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
-import org.apache.isis.viewer.bdd.common.ScenarioCell;
-import org.apache.isis.viewer.bdd.common.fixtures.UsingIsisViewerPeer;
-import org.apache.isis.viewer.bdd.common.parsers.DateParser;
-
-/**
- * Represents the context for a single {@link Perform} command; in effect, a row
- * of a table.
- */
-public class PerformContext {
-
-    // REVIEW: should provide this rendering context, rather than hardcoding.
-    // the net effect currently is that class members annotated with 
-    // @Hidden(where=Where.ANYWHERE) or @Disabled(where=Where.ANYWHERE) will indeed
-    // be hidden/disabled, but will be visible/enabled (perhaps incorrectly) 
-    // for any other value for Where
-    private final Where where = Where.ANYWHERE;
-
-    private final UsingIsisViewerPeer peer;
-
-    private final ObjectAdapter onAdapter;
-    private final ObjectMember objectMember;
-    private final List<ScenarioCell> argumentCells;
-
-    public PerformContext(final UsingIsisViewerPeer peer, final ObjectAdapter onAdapter, final ObjectMember objectMember, final List<ScenarioCell> argumentCells) {
-        this.onAdapter = onAdapter;
-        this.objectMember = objectMember;
-        this.peer = peer;
-        this.argumentCells = argumentCells;
-    }
-
-    public UsingIsisViewerPeer getPeer() {
-        return peer;
-    }
-
-    public ObjectAdapter getOnAdapter() {
-        return onAdapter;
-    }
-
-    public ObjectMember getObjectMember() {
-        return objectMember;
-    }
-
-    public List<ScenarioCell> getArgumentCells() {
-        return argumentCells;
-    }
-
-    public Consent visibleMemberConsent() {
-        return getObjectMember().isVisible(getAuthenticationSession(), getOnAdapter(), where);
-    }
-
-    public Consent usableMemberConsent() {
-        return getObjectMember().isUsable(getAuthenticationSession(), getOnAdapter(), where);
-    }
-
-    public Consent validObjectConsent() {
-        final ObjectAdapter onAdapter = getOnAdapter();
-        return onAdapter.getSpecification().isValid(onAdapter);
-    }
-
-    public void ensureVisible(final CellBinding onMemberBinding, final ScenarioCell onMemberCell) throws ScenarioBoundValueException {
-        final Consent visible = objectMember.isVisible(getAuthenticationSession(), getOnAdapter(), where);
-        if (visible.isVetoed()) {
-            throw ScenarioBoundValueException.current(onMemberBinding, "(not visible)");
-        }
-    }
-
-    public void ensureUsable(final CellBinding onMemberBinding, final ScenarioCell onMemberCell) throws ScenarioBoundValueException {
-        final Consent usable = objectMember.isUsable(getAuthenticationSession(), getOnAdapter(), where);
-        if (usable.isVetoed()) {
-            throw ScenarioBoundValueException.current(onMemberBinding, "(not usable)");
-        }
-    }
-
-    public void ensureAvailableForDeploymentType(final CellBinding onMemberBinding, final ScenarioCell onMemberCell) throws ScenarioBoundValueException {
-        final DeploymentType deploymentType = this.peer.getDeploymentType();
-
-        final boolean isExploration = objectMember.getFacet(ExplorationFacet.class) != null;
-        if (isExploration && !deploymentType.isExploring()) {
-            throw ScenarioBoundValueException.current(onMemberBinding, "(not running in exploration mode)");
-        }
-
-        final boolean isPrototype = objectMember.getFacet(PrototypeFacet.class) != null;
-        if (isPrototype && !deploymentType.isPrototyping()) {
-            throw ScenarioBoundValueException.current(onMemberBinding, "(not running in prototype mode)");
-        }
-    }
-
-    protected AuthenticationSession getAuthenticationSession() {
-        return getPeer().getAuthenticationSession();
-    }
-
-    public DateParser getDateParser() {
-        return peer.getDateParser();
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/PerformOwner.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/PerformOwner.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/PerformOwner.java
deleted file mode 100644
index 06b5157..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/PerformOwner.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform;
-
-public interface PerformOwner {
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/RemoveFromCollection.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/RemoveFromCollection.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/RemoveFromCollection.java
deleted file mode 100644
index 7fe0b39..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/RemoveFromCollection.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform;
-
-import java.util.List;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.consent.Consent;
-import org.apache.isis.core.metamodel.consent.InteractionInvocationMethod;
-import org.apache.isis.core.metamodel.facets.collections.modify.CollectionRemoveFromFacet;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
-import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
-import org.apache.isis.viewer.bdd.common.CellBinding;
-import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
-import org.apache.isis.viewer.bdd.common.ScenarioCell;
-
-public class RemoveFromCollection extends PerformAbstractTypeParams {
-
-    private ObjectAdapter result;
-
-    public RemoveFromCollection(final Perform.Mode mode) {
-        super("remove from collection", Type.COLLECTION, NumParameters.ONE, mode);
-    }
-
-    @Override
-    public void doHandle(final PerformContext performContext) throws ScenarioBoundValueException {
-
-        final ObjectAdapter onAdapter = performContext.getOnAdapter();
-        final ObjectMember nakedObjectMember = performContext.getObjectMember();
-        final CellBinding onMemberBinding = performContext.getPeer().getOnMemberBinding();
-        @SuppressWarnings("unused")
-        final ScenarioCell onMemberCell = onMemberBinding.getCurrentCell();
-
-        final List<ScenarioCell> argumentCells = performContext.getArgumentCells();
-
-        final OneToManyAssociation otma = (OneToManyAssociation) nakedObjectMember;
-
-        // safe since guaranteed by superclass
-        final CellBinding arg0Binding = performContext.getPeer().getArg0Binding();
-        final ScenarioCell arg0Cell = argumentCells.get(0);
-        final String toRemove = arg0Cell.getText();
-
-        final CollectionRemoveFromFacet removeFromFacet = nakedObjectMember.getFacet(CollectionRemoveFromFacet.class);
-        if (removeFromFacet == null) {
-            throw ScenarioBoundValueException.current(onMemberBinding, "(cannot remove from collection)");
-        }
-
-        final ObjectAdapter toRemoveAdapter = performContext.getPeer().getAliasRegistry().getAliased(toRemove);
-        if (toRemoveAdapter == null) {
-            throw ScenarioBoundValueException.current(arg0Binding, "(unknown alias)");
-        }
-
-        // validate argument
-        otma.createValidateAddInteractionContext(getSession(), InteractionInvocationMethod.BY_USER, onAdapter, toRemoveAdapter);
-        final Consent validToRemove = otma.isValidToRemove(onAdapter, toRemoveAdapter);
-        if (validToRemove.isVetoed()) {
-            throw ScenarioBoundValueException.current(onMemberBinding, validToRemove.getReason());
-        }
-
-        // remove
-        removeFromFacet.remove(onAdapter, toRemoveAdapter);
-
-    }
-
-    @Override
-    public ObjectAdapter getResult() {
-        return result;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/SaveObject.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/SaveObject.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/SaveObject.java
deleted file mode 100644
index d101d13..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/SaveObject.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.consent.Consent;
-import org.apache.isis.core.runtime.system.context.IsisContext;
-import org.apache.isis.core.runtime.system.persistence.Persistor;
-import org.apache.isis.viewer.bdd.common.CellBinding;
-import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
-
-public class SaveObject extends PerformAbstractTypeParams {
-
-    private ObjectAdapter result;
-
-    public SaveObject(final Perform.Mode mode) {
-        super("save", Type.OBJECT, NumParameters.ZERO, mode);
-    }
-
-    @Override
-    public void doHandle(final PerformContext performContext) throws ScenarioBoundValueException {
-
-        final ObjectAdapter onAdapter = performContext.getOnAdapter();
-
-        final Consent valid = onAdapter.getSpecification().isValid(onAdapter);
-
-        final CellBinding performBinding = performContext.getPeer().getPerformBinding();
-        if (valid.isVetoed()) {
-            throw ScenarioBoundValueException.current(performBinding, valid.getReason());
-        }
-
-        if (onAdapter.representsPersistent()) {
-            throw ScenarioBoundValueException.current(performBinding, "(already persistent)");
-        }
-
-        // persist
-
-        // xactn mgmt now performed by PersistenceSession#makePersistent
-        // getOwner().getTransactionManager().startTransaction();
-        getPersistenceSession().makePersistent(onAdapter);
-        // getOwner().getTransactionManager().endTransaction();
-
-        // all OK.
-    }
-
-    protected Persistor getPersistenceSession() {
-        return IsisContext.getPersistenceSession();
-    }
-
-    @Override
-    public ObjectAdapter getResult() {
-        return result;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/SetProperty.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/SetProperty.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/SetProperty.java
deleted file mode 100644
index 71d7c85..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/SetProperty.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform;
-
-import java.util.List;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.consent.Consent;
-import org.apache.isis.core.metamodel.facets.properties.modify.PropertySetterFacet;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
-import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
-import org.apache.isis.viewer.bdd.common.CellBinding;
-import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
-import org.apache.isis.viewer.bdd.common.ScenarioCell;
-
-public class SetProperty extends PerformAbstractTypeParams {
-
-    private ObjectAdapter result;
-
-    public SetProperty(final Perform.Mode mode) {
-        super("set property", Type.PROPERTY, NumParameters.ONE, mode);
-    }
-
-    @Override
-    public void doHandle(final PerformContext performContext) throws ScenarioBoundValueException {
-
-        final ObjectAdapter onAdapter = performContext.getOnAdapter();
-        final ObjectMember nakedObjectMember = performContext.getObjectMember();
-        final List<ScenarioCell> argumentCells = performContext.getArgumentCells();
-
-        final OneToOneAssociation otoa = (OneToOneAssociation) nakedObjectMember;
-
-        // set
-        final PropertySetterFacet setterFacet = otoa.getFacet(PropertySetterFacet.class);
-        if (setterFacet == null) {
-            final CellBinding onMemberBinding = performContext.getPeer().getOnMemberBinding();
-            throw ScenarioBoundValueException.current(onMemberBinding, "(cannot set)");
-        }
-
-        // safe to obtain since guaranteed by superclass
-        final CellBinding arg0Binding = performContext.getPeer().getArg0Binding();
-        final ScenarioCell arg0Cell = argumentCells.get(0);
-
-        // obtain existing as 'context' (used if this is a parsed @Value)
-        final ObjectAdapter contextAdapter = otoa.get(onAdapter);
-
-        // validate parameter
-        final ObjectAdapter toSetAdapter = performContext.getPeer().getAdapter(contextAdapter, otoa.getSpecification(), arg0Binding, arg0Cell);
-        final Consent validConsent = otoa.isAssociationValid(onAdapter, toSetAdapter);
-        if (validConsent.isVetoed()) {
-            throw ScenarioBoundValueException.current(arg0Binding, validConsent.getReason());
-        }
-
-        setterFacet.setProperty(onAdapter, toSetAdapter);
-
-    }
-
-    @Override
-    public ObjectAdapter getResult() {
-        return result;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/AssertsContainment.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/AssertsContainment.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/AssertsContainment.java
deleted file mode 100644
index b3b246b..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/AssertsContainment.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat;
-
-/**
- * Parameterizes {@link ThatSubcommand}s.
- */
-public enum AssertsContainment {
-
-    CONTAINS("contains", true, "(does not contain)"), DOES_NOT_CONTAIN("does not contain", false, "(contains)");
-
-    private final String key;
-    private final boolean contains;
-    private final String errorMsgIfNotSatisfied;
-
-    private AssertsContainment(final String key, final boolean contains, final String errorMsgIfNotSatisfied) {
-        this.key = key;
-        this.contains = contains;
-        this.errorMsgIfNotSatisfied = errorMsgIfNotSatisfied;
-    }
-
-    public String getKey() {
-        return key;
-    }
-
-    public boolean doesContain() {
-        return contains;
-    }
-
-    public boolean isSatisfiedBy(final boolean contains) {
-        return this.contains == contains;
-    }
-
-    public String getErrorMsgIfNotSatisfied() {
-        return errorMsgIfNotSatisfied;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/AssertsEmpty.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/AssertsEmpty.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/AssertsEmpty.java
deleted file mode 100644
index 6b69c09..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/AssertsEmpty.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat;
-
-/**
- * Parameterizes {@link ThatSubcommand}s.
- */
-public enum AssertsEmpty {
-
-    EMPTY("is empty", true, "(not empty)"), NOT_EMPTY("is not empty", false, "(empty)");
-
-    private final String key;
-    private final boolean empty;
-    private final String errorMsgIfNotSatisfied;
-
-    AssertsEmpty(final String key, final boolean empty, final String errorMsgIfNotSatisfied) {
-        this.key = key;
-        this.empty = empty;
-        this.errorMsgIfNotSatisfied = errorMsgIfNotSatisfied;
-    }
-
-    public String getKey() {
-        return key;
-    }
-
-    public boolean isEmpty() {
-        return empty;
-    }
-
-    public boolean isSatisfiedBy(final boolean empty) {
-        return this.empty == empty;
-    }
-
-    public String getErrorMsgIfNotSatisfied() {
-        return errorMsgIfNotSatisfied;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/AssertsValidity.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/AssertsValidity.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/AssertsValidity.java
deleted file mode 100644
index 831512c..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/AssertsValidity.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat;
-
-import org.apache.isis.core.metamodel.consent.Consent;
-import org.apache.isis.viewer.bdd.common.CellBinding;
-
-/**
- * Parameterizes {@link ThatSubcommand}s.
- * 
- * @author Dan Haywood
- */
-public enum AssertsValidity {
-
-    VALID(true, "is valid for", "is valid", "valid"), INVALID(false, "is not valid for", "is not valid", "not valid", "invalid");
-
-    private final String[] keys;
-    private final boolean valid;
-
-    AssertsValidity(final boolean valid, final String... keys) {
-        this.keys = keys;
-        this.valid = valid;
-    }
-
-    public String[] getKeys() {
-        return keys;
-    }
-
-    public boolean isValid() {
-        return valid;
-    }
-
-    public boolean satisfiedBy(final Consent validityConsent) {
-        return validityConsent.isAllowed() && isValid() || validityConsent.isVetoed() && !isValid();
-    }
-
-    /**
-     * The reason to use if the assertion is not valid.
-     */
-    public String getReason(final Consent validityConsent) {
-        return isValid() ? validityConsent.getReason() : "(valid)";
-    }
-
-    /**
-     * The binding whose current cell should be coloured if the assertion fails.
-     */
-    public CellBinding colorBinding(final CellBinding arg0Binding, final CellBinding thatBinding) {
-        if (arg0Binding == null) {
-            return thatBinding;
-        }
-        return isValid() ? arg0Binding : thatBinding;
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/Disabled.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/Disabled.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/Disabled.java
deleted file mode 100644
index 5242f81..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/Disabled.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.viewer.bdd.common.CellBinding;
-import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
-
-public class Disabled extends ThatSubcommandAbstract {
-
-    public Disabled() {
-        super("is disabled", "is not usable", "is not enabled");
-    }
-
-    @Override
-    public ObjectAdapter that(final PerformContext performContext) throws ScenarioBoundValueException {
-
-        if (performContext.usableMemberConsent().isAllowed()) {
-            final CellBinding onMemberBinding = performContext.getPeer().getOnMemberBinding();
-            throw ScenarioBoundValueException.current(onMemberBinding, "(usable)");
-        }
-
-        return null;
-
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/Hidden.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/Hidden.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/Hidden.java
deleted file mode 100644
index a39148c..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/Hidden.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.viewer.bdd.common.CellBinding;
-import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
-
-public class Hidden extends ThatSubcommandAbstract {
-
-    public Hidden() {
-        super("is hidden", "is not visible");
-    }
-
-    @Override
-    public ObjectAdapter that(final PerformContext performContext) throws ScenarioBoundValueException {
-
-        if (performContext.visibleMemberConsent().isAllowed()) {
-            final CellBinding onMemberBinding = performContext.getPeer().getOnMemberBinding();
-            throw ScenarioBoundValueException.current(onMemberBinding, "(visible)");
-        }
-
-        return null;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/PerformCheckThatAbstract.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/PerformCheckThatAbstract.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/PerformCheckThatAbstract.java
deleted file mode 100644
index 46fbf3a..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/PerformCheckThatAbstract.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.viewer.bdd.common.CellBinding;
-import org.apache.isis.viewer.bdd.common.IsisViewerConstants;
-import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
-import org.apache.isis.viewer.bdd.common.ScenarioCell;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.Perform;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformAbstract;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
-
-public abstract class PerformCheckThatAbstract extends PerformAbstract {
-
-    protected static enum OnMemberColumn {
-        REQUIRED, NOT_REQUIRED
-    }
-
-    private final Map<String, ThatSubcommand> subcommandByKey = new HashMap<String, ThatSubcommand>();
-    private ObjectAdapter result;
-    private final boolean requiresMember;
-
-    public PerformCheckThatAbstract(final String key, final OnMemberColumn onMemberColumn, final Perform.Mode mode, final ThatSubcommand... thatSubcommands) {
-        super(key, mode);
-        requiresMember = onMemberColumn == OnMemberColumn.REQUIRED;
-        for (final ThatSubcommand thatSubcommand : thatSubcommands) {
-            for (final String subKey : thatSubcommand.getSubkeys()) {
-                subcommandByKey.put(subKey, thatSubcommand);
-            }
-        }
-    }
-
-    @Override
-    public void perform(final PerformContext performContext) throws ScenarioBoundValueException {
-        final CellBinding thatItBinding = performContext.getPeer().getThatItBinding();
-        if (!thatItBinding.isFound()) {
-            final CellBinding performBinding = performContext.getPeer().getPerformBinding();
-            throw ScenarioBoundValueException.current(performBinding, "(require " + IsisViewerConstants.THAT_IT_NAME + "' column)");
-        }
-        final ScenarioCell thatItCell = thatItBinding.getCurrentCell();
-        final String thatIt = thatItCell.getText();
-        final ThatSubcommand thatSubcommand = subcommandByKey.get(thatIt);
-        if (thatSubcommand == null) {
-            throw ScenarioBoundValueException.current(thatItBinding, "(unknown '" + IsisViewerConstants.THAT_IT_NAME + "' verb)");
-        }
-        result = thatSubcommand.that(performContext);
-    }
-
-    @Override
-    public ObjectAdapter getResult() {
-        return result;
-    }
-
-    @Override
-    public boolean requiresMember() {
-        return requiresMember;
-    }
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/ProposedArgumentValidityAbstract.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/ProposedArgumentValidityAbstract.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/ProposedArgumentValidityAbstract.java
deleted file mode 100644
index 91fd422..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/ProposedArgumentValidityAbstract.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat;
-
-import org.apache.isis.core.commons.lang.StringUtils;
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.consent.Consent;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
-import org.apache.isis.viewer.bdd.common.CellBinding;
-import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
-import org.apache.isis.viewer.bdd.common.ScenarioCell;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
-
-public abstract class ProposedArgumentValidityAbstract extends ThatValidityAbstract {
-
-    public ProposedArgumentValidityAbstract(final AssertsValidity assertion) {
-        super(assertion);
-    }
-
-    @Override
-    public ObjectAdapter that(final PerformContext performContext) throws ScenarioBoundValueException {
-
-        final ObjectMember nakedObjectMember = performContext.getObjectMember();
-        final CellBinding thatBinding = performContext.getPeer().getThatItBinding();
-        final CellBinding arg0Binding = performContext.getPeer().getArg0Binding();
-
-        // check we have an argument to validate (if one is required)
-        if (!arg0Binding.isFound()) {
-            throw ScenarioBoundValueException.current(thatBinding, "(requires argument)");
-        }
-
-        final ScenarioCell arg0Cell = arg0Binding.getCurrentCell();
-        final String toValidate = arg0Cell.getText();
-        if (StringUtils.isNullOrEmpty(toValidate)) {
-            throw ScenarioBoundValueException.current(arg0Binding, "(required)");
-        }
-
-        final ObjectAdapter toValidateAdapter = performContext.getPeer().getAdapter(null, nakedObjectMember.getSpecification(), arg0Binding, arg0Cell);
-        final Consent validityConsent = determineConsent(performContext, toValidateAdapter);
-        if (!getAssertion().satisfiedBy(validityConsent)) {
-            throw ScenarioBoundValueException.current(getAssertion().colorBinding(arg0Binding, thatBinding), getAssertion().getReason(validityConsent));
-        }
-
-        return toValidateAdapter;
-    }
-
-    protected abstract Consent determineConsent(final PerformContext performContext, ObjectAdapter toValidateAdapter);
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/ThatSubcommand.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/ThatSubcommand.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/ThatSubcommand.java
deleted file mode 100644
index 9209512..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/ThatSubcommand.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat;
-
-import java.util.List;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformOwner;
-
-public interface ThatSubcommand {
-
-    ObjectAdapter that(PerformContext performContext) throws ScenarioBoundValueException;
-
-    List<String> getSubkeys();
-
-    void setOwner(PerformOwner owner);
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/ThatSubcommandAbstract.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/ThatSubcommandAbstract.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/ThatSubcommandAbstract.java
deleted file mode 100644
index fcc8206..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/ThatSubcommandAbstract.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformOwner;
-
-public abstract class ThatSubcommandAbstract implements ThatSubcommand {
-
-    private final List<String> subkeys;
-    private PerformOwner owner;
-
-    public ThatSubcommandAbstract(final String... subkeys) {
-        this.subkeys = Collections.unmodifiableList(Arrays.asList(subkeys));
-    }
-
-    @Override
-    public List<String> getSubkeys() {
-        return subkeys;
-    }
-
-    protected PerformOwner getOwner() {
-        return owner;
-    }
-
-    /**
-     * Injected.
-     */
-    @Override
-    public void setOwner(final PerformOwner owner) {
-        this.owner = owner;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/ThatValidityAbstract.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/ThatValidityAbstract.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/ThatValidityAbstract.java
deleted file mode 100644
index 9c41083..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/ThatValidityAbstract.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat;
-
-public abstract class ThatValidityAbstract extends ThatSubcommandAbstract {
-
-    private final AssertsValidity assertion;
-
-    public ThatValidityAbstract(final AssertsValidity assertion) {
-        super(assertion.getKeys());
-        this.assertion = assertion;
-    }
-
-    public AssertsValidity getAssertion() {
-        return assertion;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/Usable.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/Usable.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/Usable.java
deleted file mode 100644
index b254b94..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/Usable.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.viewer.bdd.common.CellBinding;
-import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
-
-public class Usable extends ThatSubcommandAbstract {
-
-    public Usable() {
-        super("is usable", "is enabled", "is not disabled");
-    }
-
-    @Override
-    public ObjectAdapter that(final PerformContext performContext) throws ScenarioBoundValueException {
-
-        if (!performContext.usableMemberConsent().isAllowed()) {
-            final CellBinding onMemberBinding = performContext.getPeer().getOnMemberBinding();
-            throw ScenarioBoundValueException.current(onMemberBinding, "(disabled)");
-        }
-
-        return null;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/Visible.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/Visible.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/Visible.java
deleted file mode 100644
index 02c7c7d..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/Visible.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.viewer.bdd.common.CellBinding;
-import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
-
-public class Visible extends ThatSubcommandAbstract {
-
-    public Visible() {
-        super("is visible", "is not hidden");
-    }
-
-    @Override
-    public ObjectAdapter that(final PerformContext performContext) throws ScenarioBoundValueException {
-
-        if (performContext.visibleMemberConsent().isVetoed()) {
-            final CellBinding onMemberBinding = performContext.getPeer().getOnMemberBinding();
-            throw ScenarioBoundValueException.current(onMemberBinding, "(hidden)");
-        }
-
-        return null;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/action/ArgumentSetNotValid.java
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/action/ArgumentSetNotValid.java b/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/action/ArgumentSetNotValid.java
deleted file mode 100644
index 906305a..0000000
--- a/component/viewer/bdd/common/src/main/java/org/apache/isis/viewer/bdd/common/fixtures/perform/checkthat/action/ArgumentSetNotValid.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.action;
-
-import java.util.List;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.consent.Consent;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
-import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
-import org.apache.isis.viewer.bdd.common.CellBinding;
-import org.apache.isis.viewer.bdd.common.ScenarioBoundValueException;
-import org.apache.isis.viewer.bdd.common.ScenarioCell;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.PerformContext;
-import org.apache.isis.viewer.bdd.common.fixtures.perform.checkthat.ThatSubcommandAbstract;
-
-public class ArgumentSetNotValid extends ThatSubcommandAbstract {
-
-    public ArgumentSetNotValid() {
-        super("is not valid for", "is invalid", "invalid");
-    }
-
-    // TODO: a lot of duplication with InvokeAction; simplify somehow?
-    @Override
-    public ObjectAdapter that(final PerformContext performContext) throws ScenarioBoundValueException {
-
-        final ObjectAdapter onAdapter = performContext.getOnAdapter();
-        final ObjectMember nakedObjectMember = performContext.getObjectMember();
-        final CellBinding onMemberBinding = performContext.getPeer().getOnMemberBinding();
-        final List<ScenarioCell> argumentCells = performContext.getArgumentCells();
-
-        final ObjectAction nakedObjectAction = (ObjectAction) nakedObjectMember;
-        final int parameterCount = nakedObjectAction.getParameterCount();
-        final boolean isContributedOneArgAction = nakedObjectAction.isContributed() && parameterCount == 1;
-
-        if (isContributedOneArgAction) {
-            return null;
-        }
-
-        // lookup arguments
-        final ObjectAdapter[] proposedArguments = performContext.getPeer().getAdapters(onAdapter, nakedObjectAction, onMemberBinding, argumentCells);
-
-        // validate arguments
-        final Consent argSetValid = nakedObjectAction.isProposedArgumentSetValid(onAdapter, proposedArguments);
-        if (argSetValid.isAllowed()) {
-            final CellBinding thatItBinding = performContext.getPeer().getThatItBinding();
-            throw ScenarioBoundValueException.current(thatItBinding, "(valid)");
-        }
-
-        // execute
-        return null;
-    }
-
-}


[14/19] ISIS-463: mothballing BDD viewer

Posted by da...@apache.org.
http://git-wip-us.apache.org/repos/asf/isis/blob/7276dc0b/component/viewer/bdd/src/docbkx/guide/isis-bdd-integration.xml
----------------------------------------------------------------------
diff --git a/component/viewer/bdd/src/docbkx/guide/isis-bdd-integration.xml b/component/viewer/bdd/src/docbkx/guide/isis-bdd-integration.xml
deleted file mode 100644
index 299256b..0000000
--- a/component/viewer/bdd/src/docbkx/guide/isis-bdd-integration.xml
+++ /dev/null
@@ -1,4170 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-        http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
-"file:./src/docbkx/dtd-4.5/docbookx.dtd">
-<book>
-  <bookinfo>
-    <title><?eval ${docbkxGuideTitle}?></title>
-
-    <subtitle><?eval ${docbkxGuideSubTitle}?></subtitle>
-
-    <releaseinfo><?eval ${project.version}?></releaseinfo>
-
-    <authorgroup>
-      <author>
-        <firstname>Dan</firstname>
-
-        <surname>Haywood</surname>
-      </author>
-    </authorgroup>
-
-    <legalnotice>
-      <para>Permission is granted to make and distribute verbatim copies of
-      this manual provided that the copyright notice and this permission
-      notice are preserved on all copies.</para>
-    </legalnotice>
-  </bookinfo>
-
-  <!-- front matter -->
-
-  <toc></toc>
-
-  <preface id="preface">
-    <title>Preface</title>
-
-    <para>Behaviour-driven development is a means to drive the development of
-    an application through stories and scenarios. These are expressed in a
-    semi-formal textual form that can be understood (or indeed be written) by
-    the domain expert/business analyst, but which can then be used to directly
-    exercise the system under test as it is developed.</para>
-
-    <para>A number of frameworks exist to streamline this process. Generally
-    these require the developer to write glue code that acts as a bridge from
-    the textual specification and the system under test.</para>
-
-    <para>The <emphasis>BDD Viewer</emphasis> module for <emphasis>Apache
-    Isis</emphasis> aims to allow <acronym>BDD</acronym> stories/scenarios to
-    be written against the domain model of an Isis application, without the
-    developer having to write any glue code. It consists of a common library
-    that abstracts the interaction with the Isis metamodel, along with an
-    integration (that uses this common library) for one particular
-    <acronym>BDD</acronym> framework, namely <ulink
-    url="http://concordion.org">Concordion</ulink>. There is also outline
-    coverage of the <ulink url="http://fitnesse.org">FitNesse</ulink>
-    integration (part of <ulink
-    url="http://code.google.com/a/apache-extras.org/p/isis-extras">isis-extras</ulink>).</para>
-
-    <para>This user guide describes how to use the
-    <emphasis>Concordion</emphasis> integration, along with details of the
-    common library so that other <acronym>BDD</acronym> frameworks can be
-    integrated if required.</para>
-
-    <para><emphasis>Apache Isis</emphasis> is licensed under <ulink
-    url="http://www.apache.org/licenses/LICENSE-2.0.html">Apache Software
-    License v2</ulink>. However, although <emphasis>Concordion</emphasis>
-    itself licensed under Apache License v2, it in turn depends upon an XML
-    library called <ulink url="http://xom.nu">XOM</ulink>, which unfortunately
-    has an <ulink url="http://www.gnu.org/licenses/lgpl-2.1.html">LGPL
-    2.1</ulink> license. Apache projects are <ulink
-    url="http://www.apache.org/legal/resolved.html#category-x">not
-    allowed</ulink> to have dependencies on <acronym>LGPL</acronym> projects.
-    </para>
-
-    <para>The workaround that we have adopted is to exclude the
-    <acronym>XOM</acronym> dependency in Isis' own
-    <filename>pom.xml</filename> files, meaning that they are compliant with
-    Apache's licensing restrictions. However, any application code that uses
-    the <emphasis>BDD Viewer</emphasis> must explicitly add its own dependency
-    to the <acronym>XOM</acronym> library. You'll find that the
-    <filename>pom.xml</filename> files generated by the quickstart archetype
-    do indeed do this.</para>
-
-    <para>However, If you are unhappy to introduce this dependency to
-    <acronym>LGPL</acronym> in your own code, then you will not be able to use
-    the <emphasis>Concordion</emphasis> integration. </para>
-  </preface>
-
-  <!-- main content -->
-
-  <chapter>
-    <title>Introduction</title>
-
-    <abstract>
-      <para>An introduction to the idea of behaviour driven development, and
-      the components that make up <emphasis>Isis</emphasis>' integration with
-      <acronym>BDD</acronym> frameworks.</para>
-    </abstract>
-
-    <sect1>
-      <title>Behaviour-driven Development</title>
-
-      <para>Prior to agile development, requirements gathering for systems was
-      traditionally performed by business analysts discussing requirements
-      with the business, and expressing those requirements in documentation,
-      such as Word specs and perhaps spreadsheets. The acceptance criteria for
-      such requirements were often only sketched out, if at all; it would
-      normally fall to the system testers to write acceptance tests for the
-      requirements, through a mixture of consulting the original (by now
-      out-of-date) requirements documentation and (as often as not)
-      reverse-engineering the implementation.</para>
-
-      <para>Behaviour-driven development combines requirements capture and the
-      acceptance test criteria in a single form, through scenarios. As before,
-      these requirements are in a form that a non-technical domain expert from
-      the business can understand. What differs though is that these scenarios
-      can be used to directly exercise the system, and so also represent the
-      acceptance tests for the correct implementation of the requirement.
-      Moreover, the results of these tests are rendered in such a way that the
-      business can understand, and thus can help determine if the code is at
-      fault or the test. Once implemented, the acceptance tests also act as a
-      regression suite for the system.</para>
-
-      <para>Scenario tests tend to act against a complete system, or sometimes
-      at a subsystem-level. At any rate the tests must be at a granularity
-      that still makes sense to a non-technical businesss person. Compare this
-      to unit testing which exercises the behaviour / method of a single
-      class.</para>
-
-      <para>Another commonly-used name for scenario testing is "agile
-      acceptance testing". We've chosen to use the term "scenario testing"
-      though; it's a somewhat less clumsy term.</para>
-    </sect1>
-
-    <sect1 id="sec.CommonLibrary">
-      <title>Common Library</title>
-
-      <para><emphasis>Apache Isis</emphasis> integrates with
-      <acronym>BDD</acronym> frameworks through the services of a common
-      library. The main concepts that the common library exposes are:</para>
-
-      <itemizedlist>
-        <listitem>
-          <para>the <classname>Scenario</classname> class, which provides the
-          context for a single scenario of a story</para>
-        </listitem>
-
-        <listitem>
-          <para>the <classname>AliasRegistry</classname>, which allows a
-          user-friendly alias (eg "fredCustomer") to be assigned to any domain
-          object and to be referenced subsequently</para>
-        </listitem>
-
-        <listitem>
-          <para>the <classname>StoryCell</classname> interface, which is an
-          abstraction over a single element of data</para>
-
-          <para>The default implementation just wraps a
-          <classname>java.lang.String</classname>, but some frameworks might
-          provide alternative implementations. For example,
-          <emphasis>FitNesse</emphasis> has an implementation that maps to its
-          internal representation of a cell (<classname>fit.Parse</classname>
-          class).</para>
-        </listitem>
-
-        <listitem>
-          <para>the <classname>CellBinding</classname> interface, which binds
-          a column of a table to a property or to an alias</para>
-
-          <para>Many of the <acronym>BDD</acronym> frameworks (eg
-          <emphasis>Concordion</emphasis>, <emphasis>FitNesse</emphasis>)
-          encourage the use of tables as a means of succinctly capturing
-          scenario actions. This is reflected in the design of several of the
-          classes provided by the common library. The
-          <classname>CellBinding</classname> interface is used to wire the
-          values in the rows of the table to the properties specified in the
-          header.</para>
-
-          <para>Each <classname>CellBinding</classname> has a name (eg "on
-          object") and some alternative names (eg "using"). This is useful for
-          <acronym>BDD</acronym> frameworks (such as
-          <emphasis>FitNesse</emphasis>) where the provided text from the
-          scenario needs to be parsed in some way, matching up headings of
-          columns within a tabular structure. The relevant methods for
-          <acronym>BDD</acronym> framework integrations that must do this are
-          <methodname>#matches(...)</methodname>,
-          <methodname>#setHeadColumn(..)</methodname> and
-          <methodname>#createHeadColumn(..)</methodname>. Note though that not
-          every <acronym>BDD</acronym> framework integration needs this
-          particular feature; the <emphasis>Concordion</emphasis> integration
-          for example calls pre-canned methods so the matching is done simply
-          by parameter position to these method.</para>
-
-          <para>The other main method provided by
-          <classname>CellBinding</classname> is
-          <methodname>#captureCurrent(..)</methodname>. This is used (by all
-          framework integrations) to capture the current value for the column
-          which this binding represents. For example, for a column
-          representing a property name, it might hold the value
-          "firstName".</para>
-
-          <para>The library provides a default implementation of
-          <classname>CellBinding</classname>, though subclasses can override
-          if required. (For example, the <emphasis>FitNesse</emphasis>
-          integration has its own implementation to map to its data structures
-          representing cells in the FIT tables).</para>
-        </listitem>
-      </itemizedlist>
-
-      <para>One way of thinking of all these framework integrations is as a
-      replacement presentation layer, hitting the underlying domain model in
-      the same way that the regular <acronym>UI</acronym> would. (This is why
-      we call this module is called the <acronym>BDD</acronym><emphasis>
-      viewer</emphasis>).</para>
-
-      <para>In the following chapter (<xref
-      linkend="chp.IntroducingTheFramework" />), details are provided of how
-      the services of the common library are used by each of the supported
-      <acronym>BDD</acronym> framework integrations.</para>
-    </sect1>
-
-    <sect1>
-      <title>Concordion Integration</title>
-
-      <sect2>
-        <title>Introduction to Concordion</title>
-
-        <para><ulink url="http://concordion.org">Concordion</ulink> is a
-        framework to enable scenario testing. It is implemented as a <ulink
-        url="http://junit.org">JUnit4</ulink> test runner, with the test form
-        being written in <acronym>XHTML</acronym>. The domain expert /
-        business analyst authors new stories using an <acronym>XML</acronym>
-        editor; once executed as tests, the results are shown as the same
-        <acronym>XHTML</acronym> document, annotated to indicate which
-        assertions have succeeded, and which have failed. It also creates an
-        efficient feedback loop; a <emphasis>Concordion</emphasis> test will
-        "keep on going" even if it hits a failure. Thus the developer can
-        identify several issues and fix them in a single pass.</para>
-
-        <para><emphasis>Concordion</emphasis> works using a "convention over
-        configuration" approach, matching the <acronym>XHTML</acronym> text
-        file with a corresponding JUnit4 test run set up to run using
-        <emphasis>Concordion</emphasis>'s
-        <classname>ConcordionRunner</classname>, The developer then annotates
-        the <acronym>XHTML</acronym> using special (namespaced) attributes in
-        order identify the inputs to and expected results of the test. This is
-        used by the <classname>ConcordionRunner</classname> to call into
-        corresponding methods in the test.</para>
-
-        <para>For example:</para>
-
-        <itemizedlist>
-          <listitem>
-            <para>Suppose the analyst writes a scenario test called
-            <filename>CustomerPlacesOrderScenario.xhtml</filename>.</para>
-
-            <para>In the <acronym>XHTML</acronym> the analyst has identified
-            the details of the customer doing the ordering (customer ref 4321,
-            say), the product being ordered (product code 1234), the fact that
-            the customer initially has no orders, and that the customer has no
-            invoices outstanding. The test concludes with an assertion that
-            there is now an unfulfilled order for the customer, and that the
-            customer now has an invoice to be paid.</para>
-          </listitem>
-
-          <listitem>
-            <para>The developer in turn edits the <acronym>XHTML</acronym>,
-            identifying the customer and the product.</para>
-
-            <para>He then further edits the <acronym>XHTML</acronym> to call a
-            method in the JUnit4 test representing the placing of an order:
-            <methodname>placeOrder()</methodname>, say. And he finishes by
-            annotating the <acronym>XHTML</acronym> to make assertions about
-            the post conditions (unfulfilled order, new invoice to be paid
-            etc).</para>
-          </listitem>
-
-          <listitem>
-            <para>Then, the developer writes a JUnit4 test alongside the
-            <acronym>XHTML</acronym>; in this example it would be called
-            <filename>CustomerPlacesOrderScenario.java</filename>.
-            <emphasis>Concordion</emphasis> calls into this JUnit4 test as it
-            comes across the annotations in the <acronym>XHTML</acronym>, and
-            the JUnit4 test mediates with the system under test.</para>
-          </listitem>
-
-          <listitem>
-            <para>When the test runs, <emphasis>Concordion</emphasis>
-            generates a copy of the <acronym>XHTML</acronym> in an output
-            directory which can then made available for inspection by the
-            business analyst (eg published on a website).</para>
-          </listitem>
-        </itemizedlist>
-
-        <para>The <emphasis>Concordion</emphasis> website has a good <ulink
-        url="http://concordion.org/Tutorial.html">tutorial</ulink> that
-        demonstrates all the above, and can be completed in 20~30
-        minutes.</para>
-
-        <para>One slight downside of using <emphasis>Concordion</emphasis> is
-        in having to write tests in <acronym>XHTML</acronym>. One editor that
-        we recommend (commercial, but also with a free version for personal
-        use) is <ulink url="http://xmlmind.net">XmlMind</ulink>. More detailed
-        guidance is provided in <xref linkend="apx.UsingXmlMind" />.</para>
-      </sect2>
-
-      <sect2 id="sec.HowTheIsisConcordionIntegrationWorks">
-        <title>How the Isis/Concordion Integration Works</title>
-
-        <para>Although you could test an <emphasis>Apache Isis</emphasis>
-        application using vanilla <emphasis>Concordion</emphasis>, this would
-        entail you having to write all the glue code yourself to interact with
-        the domain objects. You would also need to encode the rules that are
-        normally implemented by an <emphasis>Isis</emphasis> viewer, eg so
-        that a hidden action cannot be invoked, and an invalid value for a
-        property cannot be set.</para>
-
-        <para>The <emphasis>BDD viewer</emphasis> integration provided by
-        <emphasis>Apache Isis</emphasis> works by providing a superclass for
-        the JUnit4 test, called
-        <classname>AbstractIsisConcordionScenario</classname>. This exposes
-        methods to perform all the tasks necessary for exercising an
-        application. The precise features are outlined in <xref
-        linkend="chp.IntroducingTheFramework" />.</para>
-
-        <para>For each <acronym>XHTML</acronym> scenario test, the developer
-        writes subclasses the
-        <classname>AbstractIsisConcordionScenario</classname>, creating a name
-        matching the scenario test (ie as per regular
-        <emphasis>Concordion</emphasis>). He then annotates the original
-        <acronym>XHTML</acronym>, either calling directly into the inherited
-        methods, or writing small simple methods to delegate to these
-        inherited methods as required. The <emphasis>Concordion</emphasis>
-        website has some <ulink
-        url="http://concordion.org/Technique.html">hints and tips</ulink> to
-        help you find the right balance between these two approaches.</para>
-
-        <para>The <acronym>XHTML</acronym> script that you write should have
-        the following namespace declaration:</para>
-
-        <programlisting>&lt;html 
-    xmlns:concordion="http://www.concordion.org/2007/concordion" 
-    xmlns:isis="http://isis.apache.org/2010/concordion"&gt;
-    ...
-&lt;/html&gt;</programlisting>
-
-        <para>The <literal>concordion</literal> namespace is the usual
-        namespace required by <emphasis>Concordion</emphasis>. The
-        <literal>isis</literal> namespace is defined for a similar reason: to
-        allow certain commands provided by the Isis/Concordion integration to
-        be invoked. More on this in <xref
-        linkend="chp.UserInteraction" />.</para>
-      </sect2>
-
-      <sect2>
-        <title>Specifying the Output Directory</title>
-
-        <para>The directory for the generated output can be specified
-        either:</para>
-
-        <itemizedlist>
-          <listitem>
-            <para>by overriding the <methodname>outputDir()</methodname>
-            method in <classname>AbstractIsisConcordionScenario</classname>;
-            or</para>
-          </listitem>
-
-          <listitem>
-            <para>by setting the <varname>concordion.output.dir</varname>
-            system property</para>
-          </listitem>
-        </itemizedlist>
-
-        <para>If not specified, then the output directory defaults to
-        <filename>/tmp/concordion</filename>.</para>
-      </sect2>
-
-      <sect2>
-        <title>Providing a CSS File</title>
-
-        <para>By default, Concordion will copy over the
-        <acronym>HTML</acronym> for every scenario into the output directory,
-        but it won't copy over any <acronym>CSS</acronym> resources. If you
-        want any <acronym>CSS</acronym> to be copied over, then:</para>
-
-        <itemizedlist>
-          <listitem>
-            <para>override the <methodname>customCssPackage()</methodname>
-            method in <classname>AbstractIsisConcordionScenario</classname> to
-            return any class in the package that holds the CSS file.</para>
-          </listitem>
-
-          <listitem>
-            <para>override the <methodname>customCss()</methodname> method to
-            specify the name of the <acronym>CSS</acronym> file to copy over.
-            If none is specified, then concordion.css is used.</para>
-          </listitem>
-        </itemizedlist>
-      </sect2>
-
-      <sect2>
-        <title>Configuring the Maven Surefire (test) plugin</title>
-
-        <para>The standard boilerplate to run <emphasis>Concordion</emphasis>
-        under <emphasis>Maven</emphasis> is as follows:</para>
-
-        <programlisting>&lt;plugins&gt;
-    &lt;plugin&gt;
-        &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
-        &lt;artifactId&gt;maven-surefire-plugin&lt;/artifactId&gt;
-        &lt;version&gt;2.6&lt;/version&gt;
-        &lt;configuration&gt;
-            &lt;systemPropertyVariables&gt;
-                &lt;concordion.output.dir&gt;
-                    ${project.build.directory}/concordion
-                &lt;/concordion.output.dir&gt;
-            &lt;/systemPropertyVariables&gt;
-            &lt;includes&gt;
-                &lt;include&gt;**/*Scenario.java&lt;/include&gt;
-                &lt;include&gt;**/Scenario*.java&lt;/include&gt;
-            &lt;/includes&gt;
-        &lt;/configuration&gt;
-    &lt;/plugin&gt;
-&lt;/plugins&gt;y</programlisting>
-
-        <para>There are a couple of points worth noting here.</para>
-
-        <itemizedlist>
-          <listitem>
-            <para>first, the <literal>systemPropertyVariables</literal>
-            element can be used to define the
-            <varname>concordion.output.dir</varname> system property, thereby
-            specifying the directory for the generated output</para>
-          </listitem>
-
-          <listitem>
-            <para>second, the <literal>includes</literal> element can be used
-            to only run classes with either a prefix or suffix
-            "<literal>Scenario</literal>". This allows common fixtures that
-            have been factored out to be ignored.</para>
-
-            <para>An alternative approach is to have a top-level "suite" page
-            that references all scenarios underneath (probably grouped into
-            stories). In this case the only test class that would be run
-            included is the top-level suite page. See <xref
-            linkend="sec.TopLevelSuitePage" /> for further discussion.</para>
-          </listitem>
-        </itemizedlist>
-      </sect2>
-    </sect1>
-
-    <sect1 id="sec.FitNesseIntegration">
-      <title>FitNesse Integration</title>
-
-      <para>Due to licensing restrictions, the <emphasis>FitNesse</emphasis>
-      integration is not part of <emphasis>Apache Isis</emphasis> proper.
-      However, it is available on the companion Apache Extras' <ulink
-      url="http://code.google.com/a/apache-extras.org/p/isis-extras/"><emphasis>isis-extras</emphasis></ulink>
-      site. Check that site for its release status (it is not guaranteed to be
-      in sync with <emphasis>Isis</emphasis> releases).</para>
-
-      <para>An outline of the <emphasis>FitNesse</emphasis> integration is
-      provided here, if only to help compare and contrast the means by which
-      two different frameworks integrate with the common library. We hope that
-      this will make it easier to integrate other <acronym>BDD</acronym>
-      frameworks in the future.</para>
-    </sect1>
-  </chapter>
-
-  <chapter id="chp.IntroducingTheFramework">
-    <title>Introducing the Framework</title>
-
-    <abstract>
-      <para>An introduction to the features provided by the framework. The
-      subsequent chapters provide more detailed coverage.</para>
-    </abstract>
-
-    <para>This chapter outlines the main features of the common library and
-    their support by the framework-specific integrations. The subsequent
-    chapters provide more detailed coverage.</para>
-
-    <para>Note that due to licensing restrictions the
-    <emphasis>FitNesse</emphasis> integration is not part of <emphasis>Apache
-    Isis</emphasis>. Nevertheless, an outline of the
-    <emphasis>FitNesse</emphasis> integration is provided here, if only to
-    help compare and contrast the means by which two different frameworks
-    integrate with the common library. We hope that this will make it easier
-    to integrate other <acronym>BDD</acronym> frameworks in the future.</para>
-
-    <sect1>
-      <title>Introduction</title>
-
-      <para>Broadly speaking, the framework provides the ability to bootstrap
-      and initialize an <emphasis>Isis</emphasis> application and allow the
-      domain services and objects within that application to be exercised in
-      the same way that a user would interact with the system through a
-      viewer.</para>
-
-      <para>The common library defines these abilities in terms of "fixture"
-      classes, each of which performs a single function. For example, there is
-      a fixture class to bootstrap <emphasis>Isis</emphasis>, another to setup
-      objects, and another to describe the actual interactions by the user
-      (check a property, invoke an action etc).</para>
-
-      <para>The fixture classes in the common library are oriented around a
-      tabular approach to specifying behaviour, making it easy to integrate
-      frameworks such as <emphasis>FitNesse</emphasis> that adopt a
-      table-oriented approach. Such an approach equally supports frameworks
-      such as <emphasis>Concordion</emphasis> that allow specifications to be
-      written both as tables and in free-form text. Admittedly, this does make
-      the implementation of framework integrations a little more complex than
-      it might otherwise have been ... but this is only a problem for the
-      framework integrator, not the business analyst actually writing the
-      scenarios.</para>
-    </sect1>
-
-    <sect1>
-      <title>Fixtures</title>
-
-      <para>The following chapters describe the fixtures available in detail.
-      In summary, they are:</para>
-
-      <itemizedlist>
-        <listitem>
-          <para>it bootstrap an instance of <emphasis>Apache Isis</emphasis>
-          system using the in-memory object store (see <xref
-          linkend="chp.BootstrapAndTeardown" />);</para>
-        </listitem>
-
-        <listitem>
-          <para>setting up the system state ready for the scenario (see <xref
-          linkend="chp.SetUp" />):</para>
-
-          <itemizedlist>
-            <listitem>
-              <para>specify the date/time format</para>
-            </listitem>
-
-            <listitem>
-              <para>initialize the system with a set of services, picked up
-              from the <filename>isis.properties</filename> configuration
-              file</para>
-            </listitem>
-
-            <listitem>
-              <para>allow fixtures (domain objects) to be installed into the
-              object store</para>
-            </listitem>
-
-            <listitem>
-              <para>login a specific user</para>
-            </listitem>
-
-            <listitem>
-              <para>specify the date</para>
-            </listitem>
-          </itemizedlist>
-        </listitem>
-
-        <listitem>
-          <para>allow the user to interact with services and domain objects
-          (see <xref linkend="chp.UserInteraction" />):</para>
-
-          <itemizedlist>
-            <listitem>
-              <para>asserting on the value of properties and the contents of
-              collections</para>
-            </listitem>
-
-            <listitem>
-              <para>setting the value of a property (if valid) and adding
-              to/removing from a collection (if valid)</para>
-            </listitem>
-
-            <listitem>
-              <para>invoking actions</para>
-            </listitem>
-
-            <listitem>
-              <para>asserting on the state of a class member (hidden, disabled
-              or enabled)</para>
-            </listitem>
-
-            <listitem>
-              <para>assert on the state of properties</para>
-            </listitem>
-          </itemizedlist>
-        </listitem>
-
-        <listitem>
-          <para>assert on the state of collections, either of an object, or
-          returned from an action (see <xref
-          linkend="chp.AssertingOnCollections" />);</para>
-        </listitem>
-
-        <listitem>
-          <para>tearing down the system at the end of the test (see <xref
-          linkend="chp.BootstrapAndTeardown" />)</para>
-        </listitem>
-      </itemizedlist>
-
-      <para>There are also fixtures to help with debugging (see <xref
-      linkend="chp.Debugging" />).</para>
-
-      <para>For each fixture, you'll find there's a discussion about the
-      capabilities provided by the common fixture, and then details as to the
-      support for that fixture by each of the <acronym>BDD</acronym> framework
-      integrations (<emphasis>Concordion</emphasis> and
-      <emphasis>FitNesse</emphasis>).</para>
-    </sect1>
-  </chapter>
-
-  <chapter id="chp.BootstrapAndTeardown">
-    <title>Bootstrapping &amp; Teardown</title>
-
-    <abstract>
-      <para>The fixtures provided for bootstrapping at the start of a
-      scenario, and tearing down at the end</para>
-    </abstract>
-
-    <para>In order to test an <emphasis>Apache Isis</emphasis> domain
-    application, a running instance of an <classname>IsisSystem</classname>
-    must be bootstrapped, with the appropriate configuration.</para>
-
-    <sect1>
-      <title>Scenario Context</title>
-
-      <para>The common library provides a context object which holds a
-      reference to a running <classname>IsisSystem</classname>. Moreover, it
-      tracks such things as the date/time that the scenario is running as, the
-      user that is logged-in, and managing the aliases of objects so that they
-      can be interacted with.</para>
-
-      <sect2>
-        <title>Common</title>
-
-        <para>An instance of the <classname>Scenario</classname> class
-        provides a context for the scenario. Framework integrations are
-        expected to instantiate this class, and then use it as the primary
-        means to interact with the system.</para>
-
-        <para>The <classname>Scenario</classname> class has a public no-arg
-        constructor. Instantiating the <classname>Scenario</classname> does
-        not do anything; it must also be bootstrapped (see <xref
-        linkend="sec.BootstrappingIsis" />).</para>
-      </sect2>
-
-      <sect2>
-        <title>Concordion</title>
-
-        <para>The <classname>AbstractIsisConcordionScenario</classname>
-        instantiates the <classname>Scenario</classname> object (from the
-        common library) automatically and binding it to a threadlocal. In
-        addition, <classname>AbstractIsisConcordionScenario</classname>
-        provides methods that can be invoked from within
-        <acronym>XHTML</acronym> (ie taking
-        <classname>String</classname>s).</para>
-
-        <para>Test cases should inherit from this abstract class, with the
-        <acronym>XHTML</acronym> typically calling to the inherited methods
-        directly. The developer may optionally add small helper methods to be
-        called from the <acronym>XHTML</acronym> instead; these can factor out
-        any boilerplate in the script.</para>
-      </sect2>
-
-      <sect2>
-        <title>FitNesse</title>
-
-        <para>Every <emphasis>FitNesse</emphasis> scenario must reference the
-        <classname>ScenarioFixture</classname> fixture which provides the
-        overall context for the framework. This instantiates a
-        <classname>Scenario</classname> object from the common library and
-        binding it to a thread-local.</para>
-
-        <para>Whereas other <emphasis>FitNesse</emphasis> fixtures are
-        instantiated once per table, the
-        <classname>ScenarioFixture</classname> is a <acronym>FIT</acronym>
-        <classname>DoFixture</classname> that exists for the duration of the
-        test page. It should typically be referenced in the test suite's setup
-        page, and should appear first within this setup:</para>
-
-        <informaltable>
-          <tgroup cols="1">
-            <colspec />
-
-            <tbody>
-              <row>
-                <entry><classname>Scenario Fixture</classname></entry>
-              </row>
-            </tbody>
-          </tgroup>
-        </informaltable>
-      </sect2>
-    </sect1>
-
-    <sect1 id="sec.BootstrappingIsis">
-      <title>Bootstrapping Isis</title>
-
-      <para>An <emphasis>Isis</emphasis> runtime can be bootstrapped with a
-      single call. This installs no-op implementations of some of the main
-      components, along with an in-memory object store.</para>
-
-      <sect2>
-        <title>Common</title>
-
-        <para>The <methodname>Scenario#bootstrapIsis(String configDirectory,
-        DeploymentType deploymentType)</methodname> is used to bootstrap the
-        <emphasis>Isis</emphasis> runtime:</para>
-
-        <itemizedlist>
-          <listitem>
-            <para>The specified config directory contains
-            <filename>isis.properties</filename> config file, from which the
-            services are registered. Any fixtures in that properties file are
-            ignored (the <acronym>BDD</acronym> integration requires that any
-            objects are created through the test scripts, see <xref
-            linkend="sec.SetUpObjects" /> and <xref
-            linkend="chp.UserInteraction" />).</para>
-          </listitem>
-
-          <listitem>
-            <para>The deployment type must be either EXPLORATION (meaning
-            exploration actions are enabled) or PROTOTYPE; no other values are
-            valid).</para>
-          </listitem>
-        </itemizedlist>
-
-        <para>Even if running in exploration mode, you must still logon (see
-        <xref linkend="sec.LogonAsSwitchUserTo" />) in order to indicate which
-        user account to run the scenario as.</para>
-      </sect2>
-
-      <sect2>
-        <title>Concordion</title>
-
-        <para>The <classname>AbstractIsisConcordionScenario</classname> class
-        provides two overloaded versions of
-        <methodname>bootstrapIsis(...)</methodname> method:</para>
-
-        <itemizedlist>
-          <listitem>
-            <para><methodname>#bootstrapIsis(String configDirectory,
-            DeploymentType deploymentType)</methodname></para>
-
-            <para>Intended to be called from within an <methodname>@Before
-            setUp()</methodname> method, when there's no particular need to
-            document the bootstrapping process within the scenario;</para>
-          </listitem>
-        </itemizedlist>
-
-        <itemizedlist>
-          <listitem>
-            <para><methodname>#bootstrapIsis(String configDirectory, String
-            deploymentType):boolean</methodname></para>
-
-            <para>Intended to be called from the <acronym>XHTML</acronym>
-            page, allowing the scenario document the bootstrapping process.
-            For example, to bootstrap in exploration mode, use:</para>
-
-            <programlisting>&lt;p concordion:execute="#result=bootstrapIsis(#configDir,#deploymentType)"&gt;
-Isis system &lt;span concordion:assertTrue="#result"&gt;bootstrapped&lt;/span&gt; 
-from config directory &lt;span concordion:set="#configDir"&gt;../quickrun/config&lt;/span&gt;
-and running in &lt;span concordion:set="#deploymentType"&gt;exploration&lt;/span&gt; mode.
-&lt;/p&gt;</programlisting>
-
-            <para>The method always returns <literal>true</literal>, but any
-            runtime exception will propagate to the generated page.</para>
-          </listitem>
-        </itemizedlist>
-
-        <para>Whichever method is used, they both delegate to the common
-        <methodname>Scenario#bootstrapIsis(...)</methodname> method.</para>
-      </sect2>
-
-      <sect2>
-        <title>FitNesse</title>
-
-        <para>The <classname>BootstrapIsisConfiguredFromInMode</classname>
-        fixture is used to bootstrap <emphasis>Isis</emphasis>. It takes the
-        form:</para>
-
-        <informaltable>
-          <tgroup cols="4">
-            <colspec colwidth="3*" />
-
-            <tbody>
-              <row>
-                <entry><classname>Bootstrap Isis Configured
-                From</classname></entry>
-
-                <entry><emphasis>config Directory</emphasis></entry>
-
-                <entry><methodname>In Mode</methodname></entry>
-
-                <entry><emphasis>deployment Type</emphasis></entry>
-              </row>
-            </tbody>
-          </tgroup>
-        </informaltable>
-
-        <para>This delegates to the common
-        <methodname>Scenario#bootstrapIsis(...)</methodname> method.</para>
-      </sect2>
-    </sect1>
-
-    <sect1 id="sec.ShutdownIsis">
-      <title>Shutdown Isis</title>
-
-      <para>This fixture shuts down the <emphasis>Isis</emphasis> runtime,
-      releasing memory and so on. A good place to put this is in the test's
-      teardown.</para>
-
-      <sect2>
-        <title>Common</title>
-
-        <para>The <methodname>Scenario#shutdownIsis()</methodname> method is
-        used to shutdown <emphasis>Isis</emphasis> runtime.</para>
-      </sect2>
-
-      <sect2>
-        <title>Concordion</title>
-
-        <para>To shutdown <emphasis>Isis</emphasis> from within
-        <emphasis>Concordion</emphasis>, use the
-        <methodname>AbstractIsisConcordionScenario#shutdownIsis()</methodname>
-        method. This just delegates to the common library's
-        <classname>Scenario#shutdownIsis()</classname> method.</para>
-      </sect2>
-
-      <sect2>
-        <title>FitNesse</title>
-
-        <para>To shutdown Isis from FitNesse, use the
-        <classname>ShutdownIsis</classname> fixture:</para>
-
-        <informaltable>
-          <tgroup cols="1">
-            <colspec colwidth="3*" />
-
-            <tbody>
-              <row>
-                <entry><classname>Shutdown Isis</classname></entry>
-              </row>
-            </tbody>
-          </tgroup>
-        </informaltable>
-
-        <para>This just delegates to the common library's
-        <methodname>Scenario#shutdownIsis()</methodname> method.</para>
-      </sect2>
-    </sect1>
-  </chapter>
-
-  <chapter id="chp.SetUp">
-    <title>Scenario Set Up</title>
-
-    <abstract>
-      <para>Once <emphasis>Isis</emphasis> has been bootstrapped, the
-      application state must be setup.</para>
-    </abstract>
-
-    <para>The setup fixtures are used to specify the initial state of the
-    running application for a particular scenario's. Specifically, this means
-    setting up the services that define the application, the effective date
-    and the effective user. It also allows the setup of arbitrary objects
-    (typically reference/static data objects; for transactional objects see
-    <xref linkend="chp.UserInteraction" />).</para>
-
-    <sect1 id="sec.LogonAsSwitchUserTo">
-      <title>Logging On / Switching User</title>
-
-      <para>Used to specify the currently logged-on user. Should always be
-      called near the top of the scenario, as part of the "given". Can also be
-      used for switching the current user later on in the scenario, eg to
-      check a workflow between different users.</para>
-
-      <sect2>
-        <title>Common</title>
-
-        <para>The common library provides two overloaded methods, depending on
-        whether the roles for the user need to be specified or not:</para>
-
-        <itemizedlist>
-          <listitem>
-            <para><methodname>Scenario#logonAsOrSwitchUserTo(String
-            userName)</methodname></para>
-
-            <para>Logs on / switch user to as a specific user.</para>
-          </listitem>
-
-          <listitem>
-            <para><methodname>Scenario#logonAsOrSwitchUserTo(String userName,
-            List&lt;String&gt; roleNames)</methodname></para>
-
-            <para>Logs on to a specific user, with specified roles. Part of
-            the initialization for a particular scenario's setup, and
-            typically referenced in the test suite or scenario's own setup
-            page.</para>
-          </listitem>
-        </itemizedlist>
-
-        <para>The username and roles are not validated against.</para>
-      </sect2>
-
-      <sect2>
-        <title>Concordion</title>
-
-        <para>The <emphasis>Concordion</emphasis> integration provides two
-        sets of overloaded methods in
-        <classname>AbstractIsisConcordionScenario</classname>:</para>
-
-        <itemizedlist>
-          <listitem>
-            <para><methodname>#logonAs(String userName)</methodname> and
-            <methodname>#logonAs(String userName, String
-            roleListStr)</methodname></para>
-
-            <para>Intended to be called in the initial setup, as part of the
-            scenario's "given".</para>
-          </listitem>
-
-          <listitem>
-            <para><methodname>#switchUserTo(String userName)</methodname> and
-            <methodname>#switchUserTo(String userName, String
-            roleListStr)</methodname></para>
-
-            <para>(Optional); intended to be called later on in the scenario,
-            eg, to test workflow.</para>
-          </listitem>
-        </itemizedlist>
-
-        <para>Each of these is intended to be called from the
-        <acronym>XHTML</acronym>. For example:</para>
-
-        <programlisting>&lt;p concordion:execute="#result=logonAs(#userName)"&gt;&lt;span concordion:assertTrue="#result"&gt;logged on&lt;/span&gt; as &lt;span concordion:set="#userName"&gt;fsmith&lt;/span&gt;&lt;/p&gt;</programlisting>
-
-        <para>The role list, if specified, should be comma-separated (any
-        white space will be ignored).</para>
-      </sect2>
-
-      <sect2>
-        <title>FitNesse</title>
-
-        <para>The FitNesse integration provides two sets of overloaded
-        fixtures:</para>
-
-        <informaltable>
-          <tgroup cols="2">
-            <colspec />
-
-            <tbody>
-              <row>
-                <entry><classname>Logon As</classname></entry>
-
-                <entry><emphasis>user name</emphasis></entry>
-              </row>
-            </tbody>
-          </tgroup>
-        </informaltable>
-
-        <informaltable>
-          <tgroup cols="4">
-            <colspec />
-
-            <tbody>
-              <row>
-                <entry><classname>Logon As</classname></entry>
-
-                <entry><emphasis>user name</emphasis></entry>
-
-                <entry><classname>With Roles</classname></entry>
-
-                <entry><emphasis>role list</emphasis></entry>
-              </row>
-            </tbody>
-          </tgroup>
-        </informaltable>
-
-        <para>Intended to be called in the initial setup, as part of the
-        scenario's "given".</para>
-
-        <informaltable>
-          <tgroup cols="2">
-            <colspec />
-
-            <tbody>
-              <row>
-                <entry><classname>Switch User To</classname></entry>
-
-                <entry><emphasis>user name</emphasis></entry>
-              </row>
-            </tbody>
-          </tgroup>
-        </informaltable>
-
-        <informaltable>
-          <tgroup cols="4">
-            <colspec />
-
-            <tbody>
-              <row>
-                <entry><classname>Switch User To</classname></entry>
-
-                <entry><emphasis>user name</emphasis></entry>
-
-                <entry><classname>With Roles</classname></entry>
-
-                <entry><emphasis>role list</emphasis></entry>
-              </row>
-            </tbody>
-          </tgroup>
-        </informaltable>
-
-        <para>Optional; intended to be called later on in the scenario, eg, to
-        test workflow.</para>
-
-        <para>The role list, if specified, should be comma-separated (any
-        white space will be ignored).</para>
-      </sect2>
-    </sect1>
-
-    <sect1 id="sec.DateAndTimeFormat">
-      <title>Date and Time Format</title>
-
-      <para><acronym>BDD</acronym> tests often rely on exact dates and/or time
-      to be specified, but any such date/time must be specified in text form.
-      In order that tests do not fail when run with different locales, the
-      common library allows a date/time format to be specified.</para>
-
-      <para>This fixture is typically called only once in the scenario.</para>
-
-      <para><note>
-          <para>Date/time formats are based on the currently used locale. By
-          default, Isis will use the current locale. To change this, set the
-          relevant locale within <filename>isis.properties</filename>. For
-          example:</para>
-
-          <programlisting>isis.locale=de_DE</programlisting>
-        </note><note>
-          <para>Dates are always intepreted strictly as UTC dates. This means
-          that you shouldn't need to worry about the timezone in which the
-          tests are being run.</para>
-        </note></para>
-
-      <sect2>
-        <title>Common</title>
-
-        <para>The <classname>Scenario</classname> class provides two methods
-        to specify date and time formats:</para>
-
-        <itemizedlist>
-          <listitem>
-            <para><methodname>#usingDateFormat(String)</methodname> is used to
-            specify the date format.</para>
-
-            <para>If not called, the format defaults to "dd-MMM-yyyy", eg
-            02-Aug-2010.</para>
-          </listitem>
-
-          <listitem>
-            <para><methodname>#usingTimeFormat(String)</methodname> is used to
-            specify the time format.</para>
-
-            <para>If not called, the time format defaults to "hh:mm" (a 24
-            hour clock, eg 14:45 for 2.45pm)</para>
-          </listitem>
-        </itemizedlist>
-
-        <para>Typically the scenario will have both date and also time
-        specified (in <xref linkend="sec.SettingDateAndTime" />), but
-        assertions against domain objects will often care only about date, or
-        may occasionally care only about time. Therefore, whenever text
-        representing a date must be parsed, the following is used:</para>
-
-        <itemizedlist>
-          <listitem>
-            <para>parse against date+time (eg "dd-MMM-yyyy hh:mm")</para>
-          </listitem>
-
-          <listitem>
-            <para>if that fails, parse against just date (eg
-            "dd-MMM-yyyy")</para>
-          </listitem>
-
-          <listitem>
-            <para>if that fails, parse against just time (eg "hh:mm")</para>
-          </listitem>
-        </itemizedlist>
-      </sect2>
-
-      <sect2>
-        <title>Concordion</title>
-
-        <para>The <classname>AbstractIsisConcordionScenario</classname>
-        provides two corresponding methods:</para>
-
-        <itemizedlist>
-          <listitem>
-            <para><methodname>#usingDateFormat(String)</methodname></para>
-          </listitem>
-
-          <listitem>
-            <para><methodname>#usingTimeFormat(String)</methodname></para>
-          </listitem>
-        </itemizedlist>
-
-        <para>For example:</para>
-
-        <programlisting>&lt;p concordion:execute="#result=timeIs(#dateTime)"&gt;The &lt;span concordion:assertTrue="#result"&gt;date/time&lt;/span&gt; is &lt;span concordion:set="#dateTime"&gt;2 mar 2007 09:20&lt;/span&gt;.&lt;/p&gt; </programlisting>
-
-        <para>These just delegate to the corresponding methods in the
-        <classname>Scenario</classname> class.</para>
-      </sect2>
-
-      <sect2>
-        <title>FitNesse</title>
-
-        <para>Not implemented at this time.</para>
-      </sect2>
-    </sect1>
-
-    <sect1 id="sec.SettingDateAndTime">
-      <title>Setting Date and Time</title>
-
-      <para><acronym>BDD</acronym> scenarios often rely on an exact date and
-      time, and the date/time that a scenario is being run upon can be
-      specified using this fixture. For example, with the date/time set,
-      functionality that checks the a property is defaulted to "today" can
-      then be easily verified.</para>
-
-      <para>This fixture will typically be called only once in a scenario.
-      However, more advanced scenarios might require the date/time to be
-      called different places. For example, a scenario might raise an
-      <classname>Invoice</classname>, then move the clock forward by 30 days
-      to test functionality relating to the handling of
-      <classname>Invoice</classname>s unpaid for more than 28 days.</para>
-
-      <sect2>
-        <title>Common</title>
-
-        <para>The
-        <methodname>Scenario#dateAndTimeIs(String)</methodname>method allows
-        the scenario to specify the date and time. Note that a
-        <classname>String</classname> is passed in rather than a
-        <classname>java.util.Date</classname>, so that the scenario can parse
-        the date according to the date/time format (see <xref
-        linkend="sec.DateAndTimeFormat" />).</para>
-
-        <para>The fixture installs the <classname>FixtureClock</classname> as
-        the implementation of the <classname>Clock</classname> singleton (in
-        the applib). Every call to the <classname>Clock</classname> will
-        return the same date/time until the method is called again.</para>
-
-        <para>If this fixture is not called, then the default system clock is
-        used, which gets the time from the host computer. The
-        <methodname>Scenario#debugClock()</methodname> method (<xref
-        linkend="sec.DebugClock" />) can be used to verify the clock
-        state.</para>
-      </sect2>
-
-      <sect2>
-        <title>Concordion</title>
-
-        <para>The <emphasis>Concordion</emphasis> integration provides a
-        number of overloaded methods, all designed to be called from the
-        <acronym>XHTML</acronym>:</para>
-
-        <itemizedlist>
-          <listitem>
-            <para><methodname>#dateIs(String
-            dateAndTimeStr)</methodname></para>
-          </listitem>
-
-          <listitem>
-            <para><methodname>#timeIs(String
-            dateAndTimeStr)</methodname></para>
-          </listitem>
-        </itemizedlist>
-
-        <para>For example:</para>
-
-        <programlisting>&lt;p concordion:execute="#result=timeIs(#dateTime)"&gt;
-  The &lt;span concordion:assertTrue="#result"&gt;date/time&lt;/span&gt; 
-  is &lt;span concordion:set="#dateTime"&gt;02-mar-2007 09:20&lt;/span&gt;.
-&lt;/p&gt; </programlisting>
-
-        <para>The overloaded forms are just for convenience; sometimes the
-        scenario will want to emphasis the date, other times the time.</para>
-      </sect2>
-
-      <sect2>
-        <title>FitNesse</title>
-
-        <para>The <emphasis>FitNesse</emphasis> integration provides four
-        versions (overloaded only so reads well in the page):</para>
-
-        <informaltable>
-          <tgroup cols="2">
-            <colspec />
-
-            <tbody>
-              <row>
-                <entry><classname>Date Is</classname></entry>
-
-                <entry><emphasis>date and time</emphasis></entry>
-              </row>
-            </tbody>
-          </tgroup>
-        </informaltable>
-
-        <informaltable>
-          <tgroup cols="2">
-            <colspec />
-
-            <tbody>
-              <row>
-                <entry><classname>Date Is Now</classname></entry>
-
-                <entry><emphasis>date and time</emphasis></entry>
-              </row>
-            </tbody>
-          </tgroup>
-        </informaltable>
-
-        <informaltable>
-          <tgroup cols="2">
-            <colspec />
-
-            <tbody>
-              <row>
-                <entry><classname>Time Is</classname></entry>
-
-                <entry><emphasis>date and time</emphasis></entry>
-              </row>
-            </tbody>
-          </tgroup>
-        </informaltable>
-
-        <informaltable>
-          <tgroup cols="2">
-            <colspec />
-
-            <tbody>
-              <row>
-                <entry><classname>Time Is Now</classname></entry>
-
-                <entry><emphasis>date and time</emphasis></entry>
-              </row>
-            </tbody>
-          </tgroup>
-        </informaltable>
-
-        <para>In each case the date/time provided is parsed against the format
-        'dd MMM yyyy hh:mm'</para>
-      </sect2>
-    </sect1>
-
-    <sect1 id="sec.AliasServices">
-      <title>Aliasing Services</title>
-
-      <para>Specifies an alias to a service in order to invoke actions upon
-      it. Typically this will be done for most if not all of the registered
-      repositories. The class name (as defined in
-      <filename>isis.properties</filename>) is used as the key; the alias
-      defines a simple handle.</para>
-
-      <para>For example, a service
-      <classname>com.mycompany.customers.defaults.CustomerRepositoryDefault</classname>
-      can be mapped to "customers".</para>
-
-      <sect2>
-        <title>Common</title>
-
-        <para>The common library provides two methods:<itemizedlist>
-            <listitem>
-              <para><methodname>Scenario#getAliasRegistry()</methodname></para>
-            </listitem>
-
-            <listitem>
-              <para><methodname>AliasRegistry#aliasService(String aliasAs,
-              String serviceClassName)</methodname></para>
-            </listitem>
-          </itemizedlist></para>
-
-        <para>The <acronym>BDD</acronym> framework integration is expected to
-        obtain the <classname>AliasRegistry</classname> from the
-        <classname>Scenario</classname>, and then use the
-        <classname>AliasRegisty</classname> to register the alias.</para>
-      </sect2>
-
-      <sect2>
-        <title>Concordion</title>
-
-        <para>The <methodname>Concordion</methodname> integration provides a
-        corresponding method, <methodname>#aliasService(aliasAs, String
-        serviceClassName)</methodname>. This returns <literal>true</literal>
-        if the service was found, false otherwise. Call within a table to
-        alias multiple services, for example:<programlisting>&lt;table concordion:execute="#result=aliasService(#aliasAs, #className)"&gt;
-  &lt;tr&gt;
-    &lt;th concordion:set="#className"&gt;Class Name&lt;/th&gt;
-    &lt;th concordion:set="#aliasAs"&gt;aliasAs&lt;/th&gt;
-    &lt;th concordion:assertTrue="#result"/&gt;
-  &lt;/tr&gt;
-  &lt;tr&gt;
-    &lt;td&gt;com.mycompany.myapp.objstore.dflt.claim.ClaimRepositoryDefault&lt;/td&gt;
-    &lt;td&gt;claims&lt;/td&gt;
-    &lt;td&gt;ok&lt;/td&gt;
-  &lt;/tr&gt;
-  &lt;tr&gt;
-    &lt;td&gt;com.mycompany.myapp.objstore.dflt.employee.EmployeeRepositoryDefault&lt;/td&gt;
-    &lt;td&gt;employees&lt;/td&gt;
-    &lt;td&gt;ok&lt;/td&gt;
-  &lt;/tr&gt;
-&lt;/table&gt;</programlisting></para>
-      </sect2>
-
-      <sect2>
-        <title>FitNesse</title>
-
-        <para>The <emphasis>FitNesse</emphasis> integration provides an
-        implementation of a <classname>ColumnFixture</classname>, which is
-        used as follows:</para>
-
-        <para><informaltable>
-            <tgroup cols="2">
-              <colspec colname="_1" />
-
-              <colspec colname="_2" />
-
-              <tbody>
-                <row>
-                  <entry nameend="_2" namest="_1"><classname>Alias
-                  Services</classname></entry>
-                </row>
-
-                <row>
-                  <entry><classname>class name</classname></entry>
-
-                  <entry><classname>alias=</classname></entry>
-                </row>
-
-                <row>
-                  <entry><emphasis>com.mycompany.myapp.objstore.dflt.claim.ClaimRepositoryDefault</emphasis></entry>
-
-                  <entry><emphasis>claims</emphasis></entry>
-                </row>
-              </tbody>
-            </tgroup>
-          </informaltable></para>
-      </sect2>
-    </sect1>
-
-    <sect1 id="sec.SetUpObjects">
-      <title>Setting Up Objects</title>
-
-      <para>Virtually every scenario will require some initial objects to work
-      on, be it a <classname>Customer</classname>, an
-      <classname>Order</classname> or just some reference data. However, by
-      design the <acronym>BDD</acronym> viewer runs against an in-memory
-      object store, meaning that the application having been bootstrapped has
-      nothing in its persistent object store.</para>
-
-      <para>This fixture, therefore, is used to create objects, and persists
-      them to the object store. It is typically used for immutable
-      reference/standing data objects. It can also be to setup used for
-      transaction/operational data objects, though
-      <classname>UsingIsisViewerForSetup</classname>, <xref
-      linkend="chp.UserInteraction" />, is generallly to be preferred).</para>
-
-      <para>The <classname>DebugObjectStore</classname> fixture (<xref
-      linkend="sec.DebugObjectStore" />) can be used to check the state of
-      objects created. You can also use the RunViewer fixture (<xref
-      linkend="sec.RunViewer" />) to visually inspect the state of the system
-      using the DnD viewer.</para>
-
-      <sect2>
-        <title>Common</title>
-
-        <para>The common library support for setting up objects using the
-        <classname>SetUpObjectsPeer</classname> class. This represents the
-        context for creating a set of objects all of the same type, and is
-        usually called multiple times (eg corresponding to a table structure
-        in the scenario text itself).</para>
-
-        <para>The constructor for this class takes the following
-        arguments:</para>
-
-        <itemizedlist>
-          <listitem>
-            <para><classname>AliasRegistry</classname>
-            <varname>aliasRegistry</varname></para>
-
-            <para>the alias registry which is used to lookup aliases to
-            existing objects, and is populated with aliases for the new
-            created objects (if an alias binding is specified; see
-            below).</para>
-          </listitem>
-
-          <listitem>
-            <para><classname>String</classname>
-            <varname>className</varname></para>
-
-            <para>This is the fully qualified class name of the object to be
-            instantiated</para>
-          </listitem>
-
-          <listitem>
-            <para><classname>SetUpObjectsPeer.Mode</classname>
-            <varname>mode</varname></para>
-
-            <para>This is whether the object is to be persisted or not</para>
-          </listitem>
-
-          <listitem>
-            <para><classname>CellBinding</classname>
-            <varname>aliasBinding</varname></para>
-
-            <para>This object represents a binding to a cell that will hold
-            the reference to each newly created object. It can be left
-            <literal>null</literal> if required.</para>
-          </listitem>
-        </itemizedlist>
-
-        <para>Different methods are available for <acronym>BDD</acronym>
-        framework integrations to call. Typically the <acronym>BDD</acronym>
-        framework is expected to setup header information (the names of the
-        properties), and then process each row.</para>
-
-        <para>On the header of the table, the main method to call
-        is:<itemizedlist>
-            <listitem>
-              <para><methodname>#definePropertyOrAlias(String
-              propertyNameOrAlias, int colNum)</methodname></para>
-
-              <para>This associates each column with a property of the class,
-              or an alias for the object overall</para>
-            </listitem>
-          </itemizedlist></para>
-
-        <para>When processing each row, typically the main methods to call
-        are:</para>
-
-        <itemizedlist>
-          <listitem>
-            <para><methodname>#addPropertyValueOrAlias(String
-            propertyOrAliasValue)</methodname></para>
-
-            <para>This provides the value of each property of the object to be
-            created, or the alias to know the object by once created. The
-            property value can either be an existing alias, else must be
-            parseable (nb: Isis' own value types itself perform the parsing,
-            so there's no additional work to be done here)</para>
-          </listitem>
-
-          <listitem>
-            <para><methodname>#createObject()</methodname></para>
-
-            <para>This actually instantiates the object, either persistent or
-            non-persistent as specified in the constructor, and assigns it an
-            alias</para>
-          </listitem>
-        </itemizedlist>
-
-        <para>That said, there are some other public methods that are
-        available for more complex integrations (notably:
-        <emphasis>FitNesse</emphasis>).</para>
-      </sect2>
-
-      <sect2>
-        <title>Concordion</title>
-
-        <para>The <emphasis>Concordion</emphasis> framework integration
-        provides:</para>
-
-        <itemizedlist>
-          <listitem>
-            <para><methodname>#setUpObject(String className, String aliasAs,
-            String propertyName1, String propertyName2,
-            ...)</methodname></para>
-
-            <para>There are 10 overloaded versions of this method, to account
-            for setting up different types of objects that have up to 10
-            properties.</para>
-
-            <para>The method returns a string "ok" if has worked, otherwise it
-            returns exception text. This might seem a little odd, but allows a
-            meaningful message to be shown in the
-            <acronym>XHTML</acronym>.</para>
-          </listitem>
-
-          <listitem>
-            <para><methodname>#setUpObjectVarArgs(String className, String
-            aliasAs, ...)</methodname></para>
-
-            <para>This (protected, not public) method is to cater for setting
-            up objects that require more than 10 properties to be setup. In
-            these cases, the developer should write their own method and call
-            into the <methodname>#setUpObjectsVarargs(...)</methodname> as
-            required.</para>
-          </listitem>
-        </itemizedlist>
-
-        <para>Note that this method should be called from the
-        <acronym>XHTML</acronym> using <literal>isis:execute</literal>, not
-        with <literal>concordion:execute</literal>. The difference between the
-        two is that <literal>isis:execute</literal> is called on the header
-        row as well as each body row, whereas concordion:execute only calls
-        for each body row. The integration requires the header row to be
-        called in order to read the names of the properties to be used to
-        initialize the objects.</para>
-
-        <para>For example, here's how to setup a set of three
-        <classname>Employee</classname> objects:</para>
-
-        <programlisting>&lt;p&gt;With Employees (&lt;span concordion:set="#className"&gt;com.mycompany.myapp.dom.employee.Employee&lt;/span&gt;):
-&lt;/p&gt;
-&lt;table isis:execute="#result=setUpObject(#className, #aliasAs, #name, #approver)"&gt;
-  &lt;tr&gt;
-    &lt;th concordion:set="#name"&gt;Name&lt;/th&gt;
-    &lt;th concordion:set="#approver"&gt;Approver&lt;/th&gt;
-    &lt;th concordion:set="#aliasAs"&gt;aliasAs&lt;/th&gt;
-    &lt;th concordion:assertEquals="#result"/&gt;
-  &lt;/tr&gt;
-  &lt;tr&gt;
-    &lt;td&gt;Fred Smith&lt;/td&gt;
-    &lt;td&gt;&lt;/td&gt;
-    &lt;td&gt;Employee:Fred Smith&lt;/td&gt;
-    &lt;td&gt;ok&lt;/td&gt;
-  &lt;/tr&gt;
-  &lt;tr&gt;
-    &lt;td&gt;Tom Brown&lt;/td&gt;
-    &lt;td&gt;Employee:Fred Smith&lt;/td&gt;
-    &lt;td&gt;Employee:Tom Brown&lt;/td&gt;
-    &lt;td&gt;ok&lt;/td&gt;
-  &lt;/tr&gt;
-  &lt;tr&gt;
-    &lt;td&gt;Sam Jones&lt;/td&gt;
-    &lt;td&gt;Employee:Fred Smith&lt;/td&gt;
-    &lt;td&gt;Employee:Sam Jones&lt;/td&gt;
-    &lt;td&gt;ok&lt;/td&gt;
-  &lt;/tr&gt;
-&lt;/table&gt;</programlisting>
-
-        <para>In this example, we've chosen the convention that the alias is
-        "Employee:<emphasis>FirstName LastName</emphasis>". This is though
-        just a convention; the alias could be anything you want.</para>
-      </sect2>
-
-      <sect2>
-        <title>FitNesse</title>
-
-        <para>The <emphasis>FitNesse</emphasis> integration uses the "Set Up
-        Objects" table, called like so:</para>
-
-        <informaltable>
-          <tgroup cols="3">
-            <colspec colname="_1" />
-
-            <colspec colname="_2" />
-
-            <colspec colname="_3" />
-
-            <tbody>
-              <row>
-                <entry><classname>Set Up Objects</classname></entry>
-
-                <entry nameend="_3"
-                namest="_2"><emphasis>com.mycompany.myapp.dom.employee.Employee</emphasis></entry>
-              </row>
-
-              <row>
-                <entry><classname>Name</classname></entry>
-
-                <entry><classname>Approver</classname></entry>
-
-                <entry><classname>alias as</classname></entry>
-              </row>
-
-              <row>
-                <entry><emphasis>Fred Smith</emphasis></entry>
-
-                <entry><emphasis> </emphasis></entry>
-
-                <entry><emphasis>Employee:Fred Smith</emphasis></entry>
-              </row>
-
-              <row>
-                <entry><emphasis>Tom Brown</emphasis></entry>
-
-                <entry><emphasis>Employee:Fred Smith</emphasis></entry>
-
-                <entry><emphasis>Employee:Tom Brown</emphasis></entry>
-              </row>
-
-              <row>
-                <entry><emphasis>Sam Jones</emphasis></entry>
-
-                <entry><emphasis>Employee:Fred Smith</emphasis></entry>
-
-                <entry><emphasis>Employee:Sam Jones</emphasis></entry>
-              </row>
-            </tbody>
-          </tgroup>
-        </informaltable>
-      </sect2>
-    </sect1>
-  </chapter>
-
-  <chapter id="chp.UserInteraction">
-    <title>User Interaction</title>
-
-    <abstract>
-      <para>Fixtures to describe interactions with the domain objects,
-      mimicking the way in which an end-user using an Isis viewer would
-      interact.</para>
-    </abstract>
-
-    <para>The user interaction fixtures are the centrepiece of the
-    <acronym>BDD</acronym> framework, simulating the interaction with domain
-    objects as if through a viewer. Using this fixtures, the scenario can
-    interact with objects, check their state, and alias referenced or returned
-    objects for subsequent interactions</para>
-
-    <para>There is basically just one fixture used to describe user
-    interactions, namely "Using Isis Viewer". There is also a "For Setup"
-    version (ie "Using Isis Viewer For Setup") that disables checks for
-    visibility and usability, making it easier to reuse functionality for
-    setting up objects prior to a test scenario (the "given").</para>
-
-    <para>The <classname>DebugObjectStore</classname> fixture (<xref
-    linkend="sec.DebugObjectStore" />) can be used to check the state of
-    objects created.</para>
-
-    <sect1>
-      <title>Common</title>
-
-      <para>The common library provides the
-      <classname>UsingIsisViewerPeer</classname> class as a means by which the
-      <acronym>BDD</acronym> framework integration can interact with
-      <emphasis>Apache Isis</emphasis> runtime.</para>
-
-      <para>The <classname>UsingIsisViewerPeer</classname> class is generally
-      called from within a table format, with each row representing a specific
-      interaction with the domain object. For example, a row might invoke an
-      action, or could check that a class member is unavailable.</para>
-
-      <para>Some interactions can be used to create or assign aliases to
-      domain objects. For example, invoking a non-void action will return a
-      result. If the result is a domain object, then the alias can be used
-      directly subsequently in the scenario. If the result is a collection,
-      then typically it is the scenario will make an assertion on that
-      collection using "Check List" (see <xref linkend="sec.CheckList" />) or
-      alias an object out of that list using "Alias Items In List" (see <xref
-      linkend="sec.AliasItemsInList" />).</para>
-
-      <sect2>
-        <title>Constructor</title>
-
-        <para>Because <classname>UsingIsisViewerPeer</classname> is
-        table-oriented, it uses <classname>CellBinding</classname>s (see <xref
-        linkend="sec.CommonLibrary" />) to bind table headers to rows. The
-        constructor takes the following parameters:</para>
-
-        <itemizedlist>
-          <listitem>
-            <para><classname>AliasRegistry</classname></para>
-
-            <para>Used to access aliases for existing domain objects, and to
-            register aliases for newly created/found objects.</para>
-          </listitem>
-
-          <listitem>
-            <para><classname>Perform.Mode</classname></para>
-
-            <para>Whether to actually perform the interactions or not</para>
-          </listitem>
-
-          <listitem>
-            <para><classname>CellBinding</classname>s for each of the columns
-            of the table.</para>
-
-            <para>Cell bindings are discussed immediately below.</para>
-          </listitem>
-        </itemizedlist>
-
-        <para>Each of the framework integrations is expected to instantiate
-        the <classname>UsingIsisViewerPeer</classname> at the beginning of the
-        table, and then call into the same instance for each row in the
-        table.</para>
-
-        <sect3>
-          <title>Cell Bindings</title>
-
-          <para>The <classname>CellBinding</classname>s passed into the
-          constructor correspond to the standard columns of the table.
-          Although all must be passed in, not all are needed for every
-          interaction; in these cases the value can be left blank. The
-          <classname>CellBinding</classname>s correspond to the following
-          column names:</para>
-
-          <itemizedlist>
-            <listitem>
-              <para>the "on object" column (can also use 'object', or 'on' if
-              parsing column name provided by scenario text)</para>
-
-              <para>The (alias of) the object to interact with. A value must
-              always be provided.</para>
-            </listitem>
-
-            <listitem>
-              <para>the "alias result as" column (can also use "result=",
-              "alias=", "alias as")</para>
-
-              <para>The alias to assign the result of any interaction.</para>
-            </listitem>
-
-            <listitem>
-              <para>the "perform" column (can also use "do", "interaction",
-              "interaction type")</para>
-
-              <para>the interaction to perform; discussed further below</para>
-            </listitem>
-
-            <listitem>
-              <para>the "on member" column (can also use "member", "using
-              member", using")</para>
-
-              <para>the property, collection or action to use</para>
-            </listitem>
-
-            <listitem>
-              <para>the "that it" column (can also use "that", "verb")</para>
-
-              <para>optional qualifier for interactions that make checks;
-              discussed below</para>
-            </listitem>
-
-            <listitem>
-              <para>the "with arguments" (can also "arguments", "parameters",
-              "with parameters", "for", "value", "for parameters", "value",
-              "reference")</para>
-
-              <para>the first argument, to the interaction, if any. It is
-              possible to perform interactions with multiple arguments (for
-              example, invoking an action); but the
-              <classname>UsingIsisViewerPeer</classname> needs to have a
-              binding for the first argument so that it can knows to interpret
-              any following columns as further arguments.</para>
-            </listitem>
-          </itemizedlist>
-
-          <para>The actual values that go into each of these columns are
-          listed below (<xref linkend="sec.SupportedInteractions" />).</para>
-        </sect3>
-
-        <sect3>
-          <title>The "Perform" Binding</title>
-
-          <para>Of all of the bindings discussed above, the "perform" binding
-          is the most critical because it determines the actual type of
-          interaction to be performed. The valid values that can be provided
-          for the "perform" binding are:</para>
-
-          <itemizedlist>
-            <listitem>
-              <para>check property / check collection / check add to
-              collection / check remove from collection / check action</para>
-
-              <para>These are combined with a value in the "that it" binding;
-              for example "check property XXX is hidden", or "check action XXX
-              is valid for (<emphasis>some argument list</emphasis>)"</para>
-            </listitem>
-
-            <listitem>
-              <para>get property / set property / clear property</para>
-
-              <para>Read from or write to a collection. If setting, a single
-              argument is required</para>
-            </listitem>
-
-            <listitem>
-              <para>get collection / add to collection / remove from
-              collection</para>
-
-              <para>Read or write from a collection. If writing, a single
-              argument is required</para>
-            </listitem>
-
-            <listitem>
-              <para>invoke action</para>
-
-              <para>Invoke action, with 0 to many arguments</para>
-            </listitem>
-
-            <listitem>
-              <para>get property default / get property choices / get action
-              parameter default / get action choices</para>
-
-              <para>To enable the testing of the
-              <methodname>choicesXxx()</methodname> and
-              <methodname>defaultXxx()</methodname> supporting methods</para>
-            </listitem>
-          </itemizedlist>
-
-          <para>Again, see the sections below (<xref
-          linkend="sec.SupportedInteractions" />) for specifics..</para>
-        </sect3>
-      </sect2>
-
-      <sect2>
-        <title>Capture Current</title>
-
-        <para>Once the bindings have been setup, the fixture peer should be
-        called for each row in the table. The
-        <classname>CellBinding</classname> class provides the
-        <methodname>#captureCurrent(...)</methodname> method to capture the
-        relevant value for each row (with the
-        <classname>CellBinding</classname>s obtained directory from the
-        <classname>Scenario</classname> class, eg
-        <methodname>Scenario#getOnObjectBinding()</methodname>).</para>
-
-        <para>For some framework integrations (eg
-        <methodname>Concordion</methodname>) this design introduces a little
-        more complexity than strictly necessary, because the knowledge is
-        already known as to which value relates to which binding. But for
-        other frameworks (eg FitNesse), the <classname>CellBinding</classname>
-        provides a useful abstraction that makes it easy to associate values
-        with each column.</para>
-      </sect2>
-
-      <sect2>
-        <title>Validate</title>
-
-        <para>Once the values for the current row have been captured, they can
-        be validated. The <classname>UsingIsisViewerPeer</classname> class
-        provides the following methods for this:</para>
-
-        <itemizedlist>
-          <listitem>
-            <para><methodname>#validateOnObject():
-            ObjectAdapter</methodname></para>
-
-            <para>Verifies that the current value of the "on object" binding
-            corresponds to a known alias</para>
-          </listitem>
-
-          <listitem>
-            <para><methodname>#validateAliasAs(): String</methodname></para>
-
-            <para>Verifies that the current value of the "alias as" binding is
-            not already in use</para>
-          </listitem>
-
-          <listitem>
-            <para><methodname>#validateOnMember():
-            ObjectMember</methodname></para>
-
-            <para>Verifies that the current value of the "on member" binding
-            corresponds to the name of a member (property name, collection
-            name or action name) of the type of the object being interacted
-            with (ie, as specified in the "on object" binding)</para>
-          </listitem>
-
-          <listitem>
-            <para><methodname>#validatePerform(): Perform</methodname></para>
-
-            <para>Verifies that the current value of the "perform" binding
-            corresponds to a known interaction type for the particular type of
-            member.</para>
-          </listitem>
-        </itemizedlist>
-
-        <para>Again, see the sections below (<xref
-        linkend="sec.SupportedInteractions" />) for specifics.</para>
-      </sect2>
-
-      <sect2>
-        <title>Perform Command</title>
-
-        <para>Once all the validation has been performed, the command can
-        actually be performed. This is done with the
-        <classname>UsingIsisViewerPeer</classname>'s
-        <methodname>#performCommand(ObjectAdapter onObject, String aliasAs,
-        ObjectMember onMember, Perform perform, List&lt;ScenarioCell&gt;
-        args)</methodname> method.</para>
-      </sect2>
-    </sect1>
-
-    <sect1 id="sec.SupportedInteractions">
-      <title>Supported Interactions</title>
-
-      <para>The valid values for the various bindings when interacting with a
-      class members are summarized in the following sections.</para>
-
-      <para>Note:</para>
-
-      <itemizedlist>
-        <listitem>
-          <para>the <acronym>API</acronym> provided by the common library is
-          not type-safe; the values (as provided in
-          <classname>ScenarioCell</classname>) must match the values given
-          here. While it is tempting to refactor the common library to use
-          type safe enums, this would move the need to translate scenario text
-          into each and every <acronym>BDD</acronym> framework integration.
-          The <acronym>API</acronym> is probably correct as it is, even though
-          it is reliant on the exact string phrases that appear in the tables
-          above.</para>
-        </listitem>
-      </itemizedlist>
-
-      <sect2 id="sec.InteractingWithProperties">
-        <title>Interaction with Properties</title>
-
-        <para>The valid values for the various bindings when interacting with
-        a property are summarized below:</para>
-
-        <table>
-          <title>Supported Interactions for Properties</title>
-
-          <tgroup cols="6">
-            <colspec colname="_4" colnum="4" />
-
-            <colspec colname="_5" />
-
-            <colspec colname="_6" />
-
-            <thead>
-              <row>
-                <entry align="center">on object</entry>
-
-                <entry align="center">alias as</entry>
-
-                <entry align="center">perform</entry>
-
-                <entry align="center">using member</entry>
-
-                <entry align="center">that it</entry>
-
-                <entry align="center">value</entry>
-              </row>
-            </thead>
-
-            <tbody>
-              <row>
-                <entry><emphasis>object alias</emphasis></entry>
-
-                <entry><emphasis> </emphasis></entry>
-
-                <entry><classname>check property</classname></entry>
-
-                <entry><emphasis>property name</emphasis></entry>
-
-                <entry nameend="_6" namest="_5"><classname>is
-                hidden</classname><emphasis> </emphasis></entry>
-              </row>
-
-              <row>
-                <entry><emphasis>object alias</emphasis></entry>
-
-                <entry><emphasis> </emphasis></entry>
-
-                <entry><classname>check property</classname></entry>
-
-                <entry><emphasis>property name</emphasis></entry>
-
-                <entry nameend="_6" namest="_5"><classname>is
-                visible</classname><emphasis> </emphasis></entry>
-              </row>
-
-              <row>
-                <entry><emphasis>object alias</emphasis></entry>
-
-                <entry><emphasis> </emphasis></entry>
-
-                <entry><classname>check property</classname></entry>
-
-                <entry><emphasis>property name</emphasis></entry>
-
-                <entry nameend="_6" namest="_5"><classname>is
-                disabled</classname><emphasis> </emphasis></entry>
-              </row>
-
-              <row>
-                <entry><emphasis>object alias</emphasis></entry>
-
-                <entry><emphasis> </emphasis></entry>
-
-                <entry><classname>check property</classname></entry>
-
-                <entry><emphasis>property name</emphasis></entry>
-
-                <entry nameend="_6" namest="_5"><classname>is
-                enabled</classname><emphasis> </emphasis></entry>
-              </row>
-
-              <row>
-                <entry><emphasis>object alias</emphasis></entry>
-
-                <entry><emphasis> </emphasis></entry>
-
-                <entry><classname>check property</classname></entry>
-
-                <entry><emphasis>property name</emphasis></entry>
-
-                <entry nameend="_6" namest="_5"><classname>is
-                empty</classname><emphasis> </emphasis></entry>
-              </row>
-
-              <row>
-                <entry><emphasis>object alias</emphasis></entry>
-
-                <entry><emphasis> </emphasis></entry>
-
-                <entry><classname>check property</classname></entry>
-
-                <entry><emphasis>property name</emphasis></entry>
-
-                <entry nameend="_6" namest="_5"><classname>is not
-                empty</classname><emphasis> </emphasis></entry>
-              </row>
-
-              <row>
-                <entry><emphasis>object alias</emphasis></entry>
-
-                <entry><emphasis> </emphasis></entry>
-
-                <entry><classname>check property</classname></entry>
-
-                <entry><emphasis>property name</emphasis></entry>
-
-                <entry><classname>contains</classname></entry>
-
-                <entry><emphasis>value or object alias</emphasis></entry>
-              </row>
-
-              <row>
-                <entry><emphasis>object alias</emphasis></entry>
-
-                <entry><emphasis> </emphasis></entry>
-
-                <entry><classname>check property</classname></entry>
-
-                <entry><emphasis>property name</emphasis></entry>
-
-                <entry><classname>does not contain</classname></entry>
-
-                <entry><emphasis>value or object alias</emphasis></entry>
-              </row>
-
-              <row>
-                <entry><emphasis>object alias</emphasis></entry>
-
-                <entry><emphasis> </emphasis></entry>
-
-                <entry><classname>check set property</classname></entry>
-
-                <entry><emphasis>property name</emphasis></entry>
-
-                <entry><classname>is valid for</classname></entry>
-
-                <entry><emphasis>value or object alias </emphasis></entry>
-              </row>
-
-              <row>
-                <entry><emphasis>object alias</emphasis></entry>
-
-                <entry><emphasis> </emphasis></entry>
-
-                <entry><classname>check set property</classname></entry>
-
-                <entry><emphasis>property name</emphasis></entry>
-
-                <entry><classname>is not valid for</classname></entry>
-
-                <entry><emphasis> value or object alias</emphasis></entry>
-              </row>
-
-              <row>
-                <entry><emphasis>object alias</emphasis></entry>
-
-                <entry><emphasis> </emphasis></entry>
-
-                <entry><classname>check clear property</classname></entry>
-
-                <entry><emphasis>property name</emphasis></entry>
-
-                <entry nameend="_6" namest="_5"><classname>is
-                valid</classname><emphasis> </emphasis></entry>
-              </row>
-
-              <row>
-                <entry><emphasis>object alias</emphasis></entry>
-
-                <entry><emphasis> </emphasis></entry>
-
-                <entry><classname>check clear property</classname></entry>
-
-                <entry><emphasis>property name</emphasis></entry>
-
-                <entry nameend="_6" namest="_5"><classname>is not
-                valid</classname></entry>
-              </row>
-
-              <row>
-                <entry><emphasis>object alias</emphasis></entry>
-
-                <entry><emphasis> </emphasis></entry>
-
-                <entry><classname>set property</classname></entry>
-
-                <entry><emphasis>property name</emphasis></entry>
-
-                <entry><classname> </classname></entry>
-
-                <entry><emphasis>value or object alias </emphasis></entry>
-              </row>
-
-              <row>
-                <entry><emphasis>object alias</emphasis></entry>
-
-                <entry><emphasis> </emphasis></entry>
-
-                <entry><classname>clear property</classname></entry>
-
-                <entry nameend="_6" namest="_4"><emphasis>property
-                name</emphasis><emphasis> </emphasis></entry>
-              </row>
-
-              <row>
-                <entry><emphasis>object alias</emphasis></entry>
-
-                <entry><emphasis>alias for referenced object
-                </emphasis></entry>
-
-                <entry><classname>get property</classname></entry>
-
-                <entry nameend="_6" namest="_4"><emphasis>property
-                name</emphasis></entry>
-              </row>
-
-              <row>
-                <entry><emphasis>object alias</emphasis></entry>
-
-                <entry><emphasis>alias for default object </emphasis></entry>
-
-                <entry><classname>get property default</classname></entry>
-
-                <entry nameend="_6" namest="_4"><emphasis>property
-                name</emphasis></entry>
-              </row>
-
-              <row>
-                <entry><emphasis>object alias</emphasis></entry>
-
-                <entry><emphasis>alias for list of choices</emphasis></entry>
-
-                <entry><classname>get property choices</classname></entry>
-
-                <entry nameend="_6" namest="_4"><emphasis>property
-                name</emphasis><emphasis> </emphasis></entry>
-              </row>
-            </tbody>
-          </tgroup>
-        </table>
-
-        <para>Obtaining a alias for the (value of) a property only makes sense
-        if the property is a reference type, not value type.</para>
-      </sect2>
-
-      <sect2 id="sec.InteractingWithCollections">
-        <title>Interacting with Collections</title>
-
-        <para>The valid values for the various bindings when interacting with
-        a collection are summarized below:</para>
-
-        <table>
-          <title>Supported Interactions for Collections</title>
-
-          <tgroup cols="6">
-            <colspec colname="_4" colnum="4" />
-
-            <colspec colname="_5" />
-
-            <colspec colname="_6" />
-
-            <thead>
-              <row>
-                <entry align="center">on object</entry>
-
-                <entry align="center">alias as</entry>
-
-                <entry align="center">perform</entry>
-
-                <entry align="center">using member</entry>
-
-                <entry align="center">that it</entry>
-
-                <entry align="center">reference</entry>
-              </row>
-            </thead>
-
-            <tbody>
-              <row>
-                <entry><emphasis>object alias</emphasis></entry>
-
-                <entry><emphasis> </emphasis></entry>
-
-                <entry><classname>check collection</classname></entry>
-
-                <entry><emphasis>collection name</emphasis></entry>
-
-                <entry nameend="_6" namest="_5"><classname>is
-                hidden</classname><emphasis> </emphasis></entry>
-              </row>
-
-              <row>
-                <entry><emph

<TRUNCATED>