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 2017/11/06 10:49:20 UTC

[isis] branch ISIS-1766-bs3-for-menubars updated: ISIS-1766: removes the properties from the MenuBar interfaces, messes up JAXB serialization; recreates the .xsd schema files

This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch ISIS-1766-bs3-for-menubars
in repository https://gitbox.apache.org/repos/asf/isis.git


The following commit(s) were added to refs/heads/ISIS-1766-bs3-for-menubars by this push:
     new 7f04498  ISIS-1766: removes the properties from the MenuBar interfaces, messes up JAXB serialization; recreates the .xsd schema files
7f04498 is described below

commit 7f044988a37437ee4ba0c2f13a8f384a1dd411cf
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Nov 6 10:48:14 2017 +0000

    ISIS-1766: removes the properties from the MenuBar interfaces, messes up JAXB serialization; recreates the .xsd schema files
---
 .../asciidoc/applib/layout/component/component.xsd |  17 ++
 .../{menus => menubars/bootstrap3}/menubars.xsd    |  33 ++--
 .../layout/component/ServiceActionLayoutData.java  |   4 +-
 .../component/ServiceActionLayoutDataOwner.java    |   4 +-
 .../apache/isis/applib/layout/menubars/Menu.java   |   4 -
 .../isis/applib/layout/menubars/MenuBar.java       |   6 -
 .../isis/applib/layout/menubars/MenuSection.java   |   2 +-
 .../applib/layout/menubars/bootstrap3/BS3Menu.java |   7 +-
 .../layout/menubars/bootstrap3/BS3MenuBar.java     |   7 +-
 .../layout/menubars/bootstrap3/BS3MenuBars.java    |  11 +-
 .../layout/menubars/bootstrap3/BS3MenuSection.java |  16 +-
 .../bootstrap3/BS3MenuBars_roundtrip_Test.java     |  10 +-
 .../services/menubars/menubars.layout.xml          | 174 ++++++++++-----------
 .../menubars/bootstrap3/MenuBarsServiceBS3.java    |   6 +-
 .../serviceactions/ServiceActionUtil.java          |  12 +-
 .../java/domainapp/application/menubars.layout.xml | 174 ++++++++++-----------
 16 files changed, 238 insertions(+), 249 deletions(-)

diff --git a/adocs/documentation/src/main/asciidoc/applib/layout/component/component.xsd b/adocs/documentation/src/main/asciidoc/applib/layout/component/component.xsd
index f780c27..7eca3ef 100644
--- a/adocs/documentation/src/main/asciidoc/applib/layout/component/component.xsd
+++ b/adocs/documentation/src/main/asciidoc/applib/layout/component/component.xsd
@@ -18,6 +18,8 @@
 
   <xs:element name="fieldSet" type="tns:fieldSet"/>
 
+  <xs:element name="serviceAction" type="tns:serviceAction"/>
+
   <xs:element name="property" type="tns:property"/>
 
   <xs:complexType name="domainObject">
@@ -53,6 +55,21 @@
     <xs:attribute name="promptStyle" type="tns:promptStyle"/>
   </xs:complexType>
 
+  <xs:complexType name="serviceAction">
+    <xs:sequence>
+      <xs:element minOccurs="0" name="named" type="xs:string"/>
+      <xs:element minOccurs="0" name="describedAs" type="xs:string"/>
+      <xs:element minOccurs="0" name="metadataError" type="xs:string"/>
+      <xs:element minOccurs="0" name="link" type="lnk:link"/>
+    </xs:sequence>
+    <xs:attribute name="objectType" type="xs:string" use="required"/>
+    <xs:attribute name="id" type="xs:string" use="required"/>
+    <xs:attribute name="namedEscaped" type="xs:boolean"/>
+    <xs:attribute name="bookmarking" type="tns:bookmarkPolicy"/>
+    <xs:attribute name="cssClass" type="xs:string"/>
+    <xs:attribute name="cssClassFa" type="xs:string"/>
+  </xs:complexType>
+
   <xs:complexType name="fieldSet">
     <xs:sequence>
       <xs:element maxOccurs="unbounded" minOccurs="0" ref="tns:action"/>
diff --git a/adocs/documentation/src/main/asciidoc/applib/layout/menus/menubars.xsd b/adocs/documentation/src/main/asciidoc/applib/layout/menubars/bootstrap3/menubars.xsd
similarity index 52%
rename from adocs/documentation/src/main/asciidoc/applib/layout/menus/menubars.xsd
rename to adocs/documentation/src/main/asciidoc/applib/layout/menubars/bootstrap3/menubars.xsd
index 28a5250..2dbfe28 100644
--- a/adocs/documentation/src/main/asciidoc/applib/layout/menus/menubars.xsd
+++ b/adocs/documentation/src/main/asciidoc/applib/layout/menubars/bootstrap3/menubars.xsd
@@ -1,21 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <xs:schema
         xmlns:xs="http://www.w3.org/2001/XMLSchema"
+        xmlns:mb3="http://isis.apache.org/applib/layout/menubars/bootstrap3"
         xmlns:cpt="http://isis.apache.org/applib/layout/component"
         xmlns:lnk="http://isis.apache.org/applib/layout/links"
-        xmlns:tns="http://isis.apache.org/applib/layout/menus"
+        xmlns:tns="http://isis.apache.org/applib/layout/menubars/bootstrap3"
         elementFormDefault="qualified"
-        targetNamespace="http://isis.apache.org/applib/layout/menus" version="1.0">
+        targetNamespace="http://isis.apache.org/applib/layout/menubars/bootstrap3" version="1.0">
 
     <xs:import
             namespace="http://isis.apache.org/applib/layout/component"
-            schemaLocation="../component/component.xsd"/>
+            schemaLocation="../../component/component.xsd"/>
 
     <xs:import
             namespace="http://isis.apache.org/applib/layout/links"
-            schemaLocation="../links/links.xsd"/>
-
-    <xs:element name="action" type="tns:action"/>
+            schemaLocation="../../links/links.xsd"/>
 
     <xs:element name="menuBars" type="tns:menuBars"/>
 
@@ -30,36 +29,22 @@
 
     <xs:complexType name="menuBar">
         <xs:sequence>
-            <xs:element maxOccurs="unbounded" minOccurs="1" name="menu" type="tns:menu"/>
+            <xs:element maxOccurs="unbounded" name="menu" type="tns:menu"/>
         </xs:sequence>
     </xs:complexType>
 
     <xs:complexType name="menu">
         <xs:sequence>
             <xs:element name="named" type="xs:string"/>
-            <xs:element maxOccurs="unbounded" minOccurs="1" name="section" type="tns:section"/>
+            <xs:element maxOccurs="unbounded" name="section" type="tns:section"/>
         </xs:sequence>
         <xs:attribute name="cssClassFa" type="xs:string"/>
+        <xs:attribute name="unreferencedActions" type="xs:boolean"/>
     </xs:complexType>
 
     <xs:complexType name="section">
         <xs:sequence>
-            <xs:element maxOccurs="unbounded" minOccurs="1" ref="tns:action"/>
+            <xs:element maxOccurs="unbounded" name="serviceAction" type="cpt:serviceAction"/>
         </xs:sequence>
     </xs:complexType>
-
-    <xs:complexType name="action">
-        <xs:sequence>
-            <xs:element minOccurs="0" name="named" type="xs:string"/>
-            <xs:element minOccurs="0" name="describedAs" type="xs:string"/>
-            <xs:element minOccurs="0" name="metadataError" type="xs:string"/>
-            <xs:element minOccurs="0" name="link" type="lnk:link"/>
-        </xs:sequence>
-        <xs:attribute name="objectType" type="xs:string" use="required"/>
-        <xs:attribute name="id" type="xs:string" use="required"/>
-        <xs:attribute name="namedEscaped" type="xs:boolean"/>
-        <xs:attribute name="bookmarking" type="cpt:bookmarkPolicy"/>
-        <xs:attribute name="cssClass" type="xs:string"/>
-        <xs:attribute name="cssClassFa" type="xs:string"/>
-    </xs:complexType>
 </xs:schema>
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/component/ServiceActionLayoutData.java b/core/applib/src/main/java/org/apache/isis/applib/layout/component/ServiceActionLayoutData.java
index bd4196c..13f8666 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/component/ServiceActionLayoutData.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/component/ServiceActionLayoutData.java
@@ -38,10 +38,10 @@ import org.apache.isis.applib.layout.links.Link;
  * </p>
  */
 @XmlRootElement(
-        name = "action"
+        name = "serviceAction"
 )
 @XmlType(
-    name = "action"
+    name = "serviceAction"
     , propOrder = {
         "objectType"
         , "id"
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/component/ServiceActionLayoutDataOwner.java b/core/applib/src/main/java/org/apache/isis/applib/layout/component/ServiceActionLayoutDataOwner.java
index 360b108..0f98411 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/component/ServiceActionLayoutDataOwner.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/component/ServiceActionLayoutDataOwner.java
@@ -21,6 +21,6 @@ package org.apache.isis.applib.layout.component;
 import java.util.List;
 
 public interface ServiceActionLayoutDataOwner extends Owner {
-    List<ServiceActionLayoutData> getActions();
-    void setActions(List<ServiceActionLayoutData> actions);
+    List<ServiceActionLayoutData> getServiceActions();
+    void setServiceActions(List<ServiceActionLayoutData> actions);
 }
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/menubars/Menu.java b/core/applib/src/main/java/org/apache/isis/applib/layout/menubars/Menu.java
index 4a6fc5e..cbb2797 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/menubars/Menu.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/menubars/Menu.java
@@ -18,8 +18,6 @@
  */
 package org.apache.isis.applib.layout.menubars;
 
-import java.util.List;
-
 import org.apache.isis.applib.annotation.Programmatic;
 
 public interface Menu {
@@ -27,6 +25,4 @@ public interface Menu {
     @Programmatic
     String getNamed();
 
-    @Programmatic
-    List<MenuSection> getSections();
 }
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/menubars/MenuBar.java b/core/applib/src/main/java/org/apache/isis/applib/layout/menubars/MenuBar.java
index 5203fa3..7f84461 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/menubars/MenuBar.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/menubars/MenuBar.java
@@ -18,12 +18,6 @@
  */
 package org.apache.isis.applib.layout.menubars;
 
-import java.util.List;
-
-import org.apache.isis.applib.annotation.Programmatic;
-
 public interface MenuBar {
 
-    @Programmatic
-    List<Menu> getMenus();
 }
\ No newline at end of file
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/menubars/MenuSection.java b/core/applib/src/main/java/org/apache/isis/applib/layout/menubars/MenuSection.java
index 4308c01..d3f2873 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/menubars/MenuSection.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/menubars/MenuSection.java
@@ -26,5 +26,5 @@ import org.apache.isis.applib.layout.component.ServiceActionLayoutData;
 public interface MenuSection {
 
     @Programmatic
-    List<ServiceActionLayoutData> getActions();
+    List<ServiceActionLayoutData> getServiceActions();
 }
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3Menu.java b/core/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3Menu.java
index 242d861..bc8e134 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3Menu.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3Menu.java
@@ -29,7 +29,6 @@ import com.google.common.collect.Lists;
 
 import org.apache.isis.applib.annotation.DomainServiceLayout;
 import org.apache.isis.applib.layout.menubars.Menu;
-import org.apache.isis.applib.layout.menubars.MenuSection;
 
 /**
  * Describes the collection of domain services into menubars, broadly corresponding to the aggregation of information of {@link DomainServiceLayout} that have the same value of {@link DomainServiceLayout#named()}.
@@ -80,15 +79,15 @@ public class BS3Menu implements Menu, Serializable {
 
 
 
-    private List<MenuSection> sections = Lists.newArrayList();
+    private List<BS3MenuSection> sections = Lists.newArrayList();
 
     // no wrapper
     @XmlElement(name = "section", required = true)
-    public List<MenuSection> getSections() {
+    public List<BS3MenuSection> getSections() {
         return sections;
     }
 
-    public void setSections(List<MenuSection> menuSections) {
+    public void setSections(List<BS3MenuSection> menuSections) {
         this.sections = sections;
     }
 
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3MenuBar.java b/core/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3MenuBar.java
index 1cf268b..927f7a8 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3MenuBar.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3MenuBar.java
@@ -27,7 +27,6 @@ import javax.xml.bind.annotation.XmlType;
 import com.google.common.collect.Lists;
 
 import org.apache.isis.applib.annotation.DomainServiceLayout;
-import org.apache.isis.applib.layout.menubars.Menu;
 import org.apache.isis.applib.layout.menubars.MenuBar;
 
 /**
@@ -47,15 +46,15 @@ public class BS3MenuBar implements MenuBar, Serializable {
     }
 
 
-    private List<Menu> menus = Lists.newArrayList();
+    private List<BS3Menu> menus = Lists.newArrayList();
 
     // no wrapper
     @XmlElement(name = "menu", required = true)
-    public List<Menu> getMenus() {
+    public List<BS3Menu> getMenus() {
         return menus;
     }
 
-    public void setMenus(List<Menu> menus) {
+    public void setMenus(List<BS3Menu> menus) {
         this.menus = menus;
     }
 
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3MenuBars.java b/core/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3MenuBars.java
index c1a9b19..6cdbd8b 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3MenuBars.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3MenuBars.java
@@ -26,7 +26,6 @@ import javax.xml.bind.annotation.XmlType;
 
 import org.apache.isis.applib.annotation.DomainServiceLayout;
 import org.apache.isis.applib.layout.component.ServiceActionLayoutData;
-import org.apache.isis.applib.layout.menubars.Menu;
 import org.apache.isis.applib.layout.menubars.MenuSection;
 
 /**
@@ -103,17 +102,17 @@ public class BS3MenuBars extends org.apache.isis.applib.layout.menubars.MenuBars
     private void traverseMenuBar(final BS3MenuBar menuBar, final Visitor visitor) {
         visitor.preVisit(menuBar);
         visitor.visit(menuBar);
-        for (Menu menu : menuBar.getMenus()) {
+        for (BS3Menu menu : menuBar.getMenus()) {
             traverseMenu(menu, visitor);
         }
         visitor.postVisit(menuBar);
     }
 
-    private void traverseMenu(final Menu menu, final Visitor visitor) {
+    private void traverseMenu(final BS3Menu menu, final Visitor visitor) {
         visitor.preVisit(menu);
         visitor.visit(menu);
-        final List<MenuSection> sections = menu.getSections();
-        for (MenuSection section : sections) {
+        final List<BS3MenuSection> sections = menu.getSections();
+        for (BS3MenuSection section : sections) {
             traverseSection(section, visitor);
         }
         visitor.postVisit(menu);
@@ -122,7 +121,7 @@ public class BS3MenuBars extends org.apache.isis.applib.layout.menubars.MenuBars
     private void traverseSection(final MenuSection section, final Visitor visitor) {
         visitor.preVisit(section);
         visitor.visit(section);
-        final List<ServiceActionLayoutData> actions = section.getActions();
+        final List<ServiceActionLayoutData> actions = section.getServiceActions();
         for (ServiceActionLayoutData action : actions) {
             visitor.visit(action);
         }
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3MenuSection.java b/core/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3MenuSection.java
index e3cf286..399da0b 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3MenuSection.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3MenuSection.java
@@ -31,12 +31,12 @@ import org.apache.isis.applib.layout.component.ServiceActionLayoutDataOwner;
 import org.apache.isis.applib.layout.menubars.MenuSection;
 
 /**
- * Corresponds to a domain service that contributes its actions under a particular {@link BS3MenuBar}.
+ * Corresponds to a domain service that contributes its serviceActions under a particular {@link BS3MenuBar}.
  */
 @XmlType(
         name = "section"
         , propOrder = {
-            "actions"
+            "serviceActions"
         }
 )
 public class BS3MenuSection implements MenuSection, Serializable, ServiceActionLayoutDataOwner {
@@ -47,18 +47,18 @@ public class BS3MenuSection implements MenuSection, Serializable, ServiceActionL
     }
 
 
-    private List<ServiceActionLayoutData> actions = Lists.newArrayList();
+    private List<ServiceActionLayoutData> serviceActions = Lists.newArrayList();
 
     // no wrapper
     @Override
-    @XmlElement(name = "action", required = true)
-    public List<ServiceActionLayoutData> getActions() {
-        return actions;
+    @XmlElement(name = "serviceAction", required = true)
+    public List<ServiceActionLayoutData> getServiceActions() {
+        return serviceActions;
     }
 
     @Override
-    public void setActions(List<ServiceActionLayoutData> actionLayoutDatas) {
-        this.actions = actionLayoutDatas;
+    public void setServiceActions(List<ServiceActionLayoutData> actionLayoutDatas) {
+        this.serviceActions = actionLayoutDatas;
     }
 
 
diff --git a/core/applib/src/test/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3MenuBars_roundtrip_Test.java b/core/applib/src/test/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3MenuBars_roundtrip_Test.java
index c9d1a59..5751e19 100644
--- a/core/applib/src/test/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3MenuBars_roundtrip_Test.java
+++ b/core/applib/src/test/java/org/apache/isis/applib/layout/menubars/bootstrap3/BS3MenuBars_roundtrip_Test.java
@@ -50,14 +50,14 @@ public class BS3MenuBars_roundtrip_Test {
         menu.setNamed("Parties");
 
         BS3MenuSection organisationMenu = new BS3MenuSection();
-        organisationMenu.getActions().add(new ServiceActionLayoutData("parties.OrganisationMenu", "findByReference"));
-        organisationMenu.getActions().add(new ServiceActionLayoutData("parties.OrganisationMenu", "findByName"));
-        organisationMenu.getActions().add(new ServiceActionLayoutData("parties.OrganisationMenu", "create"));
+        organisationMenu.getServiceActions().add(new ServiceActionLayoutData("parties.OrganisationMenu", "findByReference"));
+        organisationMenu.getServiceActions().add(new ServiceActionLayoutData("parties.OrganisationMenu", "findByName"));
+        organisationMenu.getServiceActions().add(new ServiceActionLayoutData("parties.OrganisationMenu", "create"));
         menu.getSections().add(organisationMenu);
 
         BS3MenuSection personMenu = new BS3MenuSection();
-        personMenu.getActions().add(new ServiceActionLayoutData("parties.PersonMenu", "findByUsername"));
-        personMenu.getActions().add(new ServiceActionLayoutData("parties.PersonMenu", "create"));
+        personMenu.getServiceActions().add(new ServiceActionLayoutData("parties.PersonMenu", "findByUsername"));
+        personMenu.getServiceActions().add(new ServiceActionLayoutData("parties.PersonMenu", "create"));
         menu.getSections().add(personMenu);
 
         menuBars.getPrimary().getMenus().add(menu);
diff --git a/core/metamodel/src/test/resources/org/apache/isis/core/metamodel/services/menubars/menubars.layout.xml b/core/metamodel/src/test/resources/org/apache/isis/core/metamodel/services/menubars/menubars.layout.xml
index 9adb982..7ac2178 100644
--- a/core/metamodel/src/test/resources/org/apache/isis/core/metamodel/services/menubars/menubars.layout.xml
+++ b/core/metamodel/src/test/resources/org/apache/isis/core/metamodel/services/menubars/menubars.layout.xml
@@ -1,88 +1,88 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<mnu:menuBars xsi:schemaLocation="http://isis.apache.org/applib/layout/menus http://isis.apache.org/applib/layout/menus/menus.xsd http://isis.apache.org/applib/layout/links http://isis.apache.org/applib/layout/links/links.xsd" xmlns:mnu="http://isis.apache.org/applib/layout/menus" xmlns:lnk="http://isis.apache.org/applib/layout/links" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-    <mnu:primary>
-        <mnu:menu>
-            <mnu:named>Hello World Objects</mnu:named>
-            <mnu:section>
-                <mnu:action objectType="helloworld.HelloWorldObjects" id="create">
-                    <mnu:named>Create</mnu:named>
-                </mnu:action>
-                <mnu:action objectType="helloworld.HelloWorldObjects" id="findByName">
-                    <mnu:named>Find By Name</mnu:named>
-                </mnu:action>
-                <mnu:action objectType="helloworld.HelloWorldObjects" id="listAll">
-                    <mnu:named>List All</mnu:named>
-                </mnu:action>
-            </mnu:section>
-        </mnu:menu>
-    </mnu:primary>
-    <mnu:secondary>
-        <mnu:menu>
-            <mnu:named>Prototyping</mnu:named>
-            <mnu:section>
-                <mnu:action objectType="isisApplib.FixtureScriptsDefault" id="runFixtureScript">
-                    <mnu:named>Run Fixture Script</mnu:named>
-                </mnu:action>
-                <mnu:action objectType="isisApplib.FixtureScriptsDefault" id="runFixtureScriptWithAutoComplete">
-                    <mnu:named>Run Fixture Script</mnu:named>
-                </mnu:action>
-                <mnu:action objectType="isisApplib.FixtureScriptsDefault" id="recreateObjectsAndReturnFirst">
-                    <mnu:named>Recreate Objects And Return First</mnu:named>
-                </mnu:action>
-            </mnu:section>
-            <mnu:section>
-                <mnu:action objectType="isisApplib.LayoutServiceMenu" id="downloadLayouts">
-                    <mnu:named>Download Object Layouts (ZIP)</mnu:named>
-                </mnu:action>
-                <mnu:action objectType="isisApplib.LayoutServiceMenu" id="downloadMenuBarsLayout">
-                    <mnu:named>Download Menu Bars Layout (XML)</mnu:named>
-                </mnu:action>
-            </mnu:section>
-            <mnu:section>
-                <mnu:action objectType="isisApplib.MetaModelServicesMenu" id="downloadMetaModel">
-                    <mnu:named>Download Meta Model (CSV)</mnu:named>
-                </mnu:action>
-            </mnu:section>
-            <mnu:section>
-                <mnu:action objectType="isisApplib.SwaggerServiceMenu" id="openSwaggerUi">
-                    <mnu:named>Open Swagger Ui</mnu:named>
-                </mnu:action>
-                <mnu:action objectType="isisApplib.SwaggerServiceMenu" id="openRestApi">
-                    <mnu:named>Open Rest Api</mnu:named>
-                </mnu:action>
-                <mnu:action objectType="isisApplib.SwaggerServiceMenu" id="downloadSwaggerSchemaDefinition">
-                    <mnu:named>Download Swagger Schema Definition</mnu:named>
-                </mnu:action>
-            </mnu:section>
-            <mnu:section>
-                <mnu:action objectType="isisApplib.TranslationServicePoMenu" id="downloadTranslations">
-                    <mnu:named>Download Translations</mnu:named>
-                </mnu:action>
-                <mnu:action objectType="isisApplib.TranslationServicePoMenu" id="resetTranslationCache">
-                    <mnu:named>Clear translation cache</mnu:named>
-                </mnu:action>
-                <mnu:action objectType="isisApplib.TranslationServicePoMenu" id="switchToReadingTranslations">
-                    <mnu:named>Switch To Reading Translations</mnu:named>
-                </mnu:action>
-                <mnu:action objectType="isisApplib.TranslationServicePoMenu" id="switchToWritingTranslations">
-                    <mnu:named>Switch To Writing Translations</mnu:named>
-                </mnu:action>
-            </mnu:section>
-            <mnu:section>
-                <mnu:action objectType="isisApplib.HsqlDbManagerMenu" id="hsqlDbManager">
-                    <mnu:named>HSQL DB Manager</mnu:named>
-                </mnu:action>
-            </mnu:section>
-        </mnu:menu>
-    </mnu:secondary>
-    <mnu:tertiary>
-        <mnu:menu>
-            <mnu:named>Configuration Service Menu</mnu:named>
-            <mnu:section>
-                <mnu:action objectType="isisApplib.ConfigurationServiceMenu" id="configuration">
-                    <mnu:named>Configuration</mnu:named>
-                </mnu:action>
-            </mnu:section>
-        </mnu:menu>
-    </mnu:tertiary>
-</mnu:menuBars>
+<mb3:menuBars xsi:schemaLocation="http://isis.apache.org/applib/layout/menubars/bootstrap3 http://isis.apache.org/applib/layout/menubars/bootstrap3/menubars.xsd http://isis.apache.org/applib/layout/component http://isis.apache.org/applib/layout/component/component.xsd http://isis.apache.org/applib/layout/links http://isis.apache.org/applib/layout/links/links.xsd" xmlns:cpt="http://isis.apache.org/applib/layout/component" xmlns:lnk="http://isis.apache.org/applib/layout/links" xmlns:mb3="h [...]
+    <mb3:primary>
+        <mb3:menu>
+            <mb3:named>Hello World Objects</mb3:named>
+            <mb3:section>
+                <mb3:serviceAction objectType="helloworld.HelloWorldObjects" id="create">
+                    <cpt:named>Create</cpt:named>
+                </mb3:serviceAction>
+                <mb3:serviceAction objectType="helloworld.HelloWorldObjects" id="findByName">
+                    <cpt:named>Find By Name</cpt:named>
+                </mb3:serviceAction>
+                <mb3:serviceAction objectType="helloworld.HelloWorldObjects" id="listAll">
+                    <cpt:named>List All</cpt:named>
+                </mb3:serviceAction>
+            </mb3:section>
+        </mb3:menu>
+    </mb3:primary>
+    <mb3:secondary>
+        <mb3:menu>
+            <mb3:named>Prototyping</mb3:named>
+            <mb3:section>
+                <mb3:serviceAction objectType="isisApplib.FixtureScriptsDefault" id="runFixtureScript">
+                    <cpt:named>Run Fixture Script</cpt:named>
+                </mb3:serviceAction>
+                <mb3:serviceAction objectType="isisApplib.FixtureScriptsDefault" id="runFixtureScriptWithAutoComplete">
+                    <cpt:named>Run Fixture Script</cpt:named>
+                </mb3:serviceAction>
+                <mb3:serviceAction objectType="isisApplib.FixtureScriptsDefault" id="recreateObjectsAndReturnFirst">
+                    <cpt:named>Recreate Objects And Return First</cpt:named>
+                </mb3:serviceAction>
+            </mb3:section>
+            <mb3:section>
+                <mb3:serviceAction objectType="isisApplib.LayoutServiceMenu" id="downloadLayouts">
+                    <cpt:named>Download Object Layouts (ZIP)</cpt:named>
+                </mb3:serviceAction>
+                <mb3:serviceAction objectType="isisApplib.LayoutServiceMenu" id="downloadMenuBarsLayout">
+                    <cpt:named>Download Menu Bars Layout (XML)</cpt:named>
+                </mb3:serviceAction>
+            </mb3:section>
+            <mb3:section>
+                <mb3:serviceAction objectType="isisApplib.MetaModelServicesMenu" id="downloadMetaModel">
+                    <cpt:named>Download Meta Model (CSV)</cpt:named>
+                </mb3:serviceAction>
+            </mb3:section>
+            <mb3:section>
+                <mb3:serviceAction objectType="isisApplib.SwaggerServiceMenu" id="openSwaggerUi">
+                    <cpt:named>Open Swagger Ui</cpt:named>
+                </mb3:serviceAction>
+                <mb3:serviceAction objectType="isisApplib.SwaggerServiceMenu" id="openRestApi">
+                    <cpt:named>Open Rest Api</cpt:named>
+                </mb3:serviceAction>
+                <mb3:serviceAction objectType="isisApplib.SwaggerServiceMenu" id="downloadSwaggerSchemaDefinition">
+                    <cpt:named>Download Swagger Schema Definition</cpt:named>
+                </mb3:serviceAction>
+            </mb3:section>
+            <mb3:section>
+                <mb3:serviceAction objectType="isisApplib.TranslationServicePoMenu" id="downloadTranslations">
+                    <cpt:named>Download Translations</cpt:named>
+                </mb3:serviceAction>
+                <mb3:serviceAction objectType="isisApplib.TranslationServicePoMenu" id="resetTranslationCache">
+                    <cpt:named>Clear translation cache</cpt:named>
+                </mb3:serviceAction>
+                <mb3:serviceAction objectType="isisApplib.TranslationServicePoMenu" id="switchToReadingTranslations">
+                    <cpt:named>Switch To Reading Translations</cpt:named>
+                </mb3:serviceAction>
+                <mb3:serviceAction objectType="isisApplib.TranslationServicePoMenu" id="switchToWritingTranslations">
+                    <cpt:named>Switch To Writing Translations</cpt:named>
+                </mb3:serviceAction>
+            </mb3:section>
+            <mb3:section>
+                <mb3:serviceAction objectType="isisApplib.HsqlDbManagerMenu" id="hsqlDbManager">
+                    <cpt:named>HSQL DB Manager</cpt:named>
+                </mb3:serviceAction>
+            </mb3:section>
+        </mb3:menu>
+    </mb3:secondary>
+    <mb3:tertiary>
+        <mb3:menu>
+            <mb3:named>Configuration Service Menu</mb3:named>
+            <mb3:section>
+                <mb3:serviceAction objectType="isisApplib.ConfigurationServiceMenu" id="configuration">
+                    <cpt:named>Configuration</cpt:named>
+                </mb3:serviceAction>
+            </mb3:section>
+        </mb3:menu>
+    </mb3:tertiary>
+</mb3:menuBars>
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/menubars/bootstrap3/MenuBarsServiceBS3.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/menubars/bootstrap3/MenuBarsServiceBS3.java
index 40ec7b4..88989c3 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/menubars/bootstrap3/MenuBarsServiceBS3.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/menubars/bootstrap3/MenuBarsServiceBS3.java
@@ -153,7 +153,7 @@ public class MenuBarsServiceBS3 implements MenuBarsService {
             final List<ServiceAndAction> serviceActionsForName = serviceActionsByName.get(serviceName);
             for (ServiceAndAction serviceAndAction : serviceActionsForName) {
 
-                if(serviceAndAction.separator && !menuSection.getActions().isEmpty()) {
+                if(serviceAndAction.separator && !menuSection.getServiceActions().isEmpty()) {
                     menu.getSections().add(menuSection);
                     menuSection = new BS3MenuSection();
                 }
@@ -162,9 +162,9 @@ public class MenuBarsServiceBS3 implements MenuBarsService {
                 final String objectType = serviceAndAction.serviceAdapter.getSpecification().getSpecId().asString();
                 ServiceActionLayoutData action = new ServiceActionLayoutData(objectType, objectAction.getId());
                 action.setNamed(objectAction.getName());
-                menuSection.getActions().add(action);
+                menuSection.getServiceActions().add(action);
             }
-            if(!menuSection.getActions().isEmpty()) {
+            if(!menuSection.getServiceActions().isEmpty()) {
                 menu.getSections().add(menuSection);
             }
         }
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionUtil.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionUtil.java
index 0c6502c..c7736a6 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionUtil.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionUtil.java
@@ -39,10 +39,10 @@ import org.apache.wicket.markup.html.panel.Fragment;
 import org.apache.wicket.model.Model;
 
 import org.apache.isis.applib.layout.component.ServiceActionLayoutData;
-import org.apache.isis.applib.layout.menubars.Menu;
-import org.apache.isis.applib.layout.menubars.MenuBar;
 import org.apache.isis.applib.layout.menubars.MenuBars;
 import org.apache.isis.applib.layout.menubars.MenuSection;
+import org.apache.isis.applib.layout.menubars.bootstrap3.BS3Menu;
+import org.apache.isis.applib.layout.menubars.bootstrap3.BS3MenuBar;
 import org.apache.isis.applib.services.bookmark.Bookmark;
 import org.apache.isis.applib.services.i18n.TranslationService;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
@@ -203,7 +203,8 @@ public final class ServiceActionUtil {
             final MenuBars menuBars,
             final ServiceActionsModel serviceActionsModel) {
 
-        final MenuBar menuBar = menuBars.menuBarFor(serviceActionsModel.getMenuBar());
+        // TODO: remove hard-coded dependency on BS3
+        final BS3MenuBar menuBar = (BS3MenuBar) menuBars.menuBarFor(serviceActionsModel.getMenuBar());
 
         final List<ObjectAdapter> serviceAdapters = serviceActionsModel.getObject();
         final ImmutableMap<ObjectAdapter, String> oidByServiceAdapter = FluentIterable.from(serviceAdapters)
@@ -217,16 +218,15 @@ public final class ServiceActionUtil {
                 .copyOf(oidByServiceAdapter).inverse();
 
         final List<CssMenuItem> menuItems = Lists.newArrayList();
-        for (final Menu menu : menuBar.getMenus()) {
+        for (final BS3Menu menu : menuBar.getMenus()) {
 
             final CssMenuItem serviceMenu = CssMenuItem.newMenuItem(menu.getNamed()).build();
 
-
             for (final MenuSection menuSection : menu.getSections()) {
 
                 boolean firstSection = true;
 
-                for (final ServiceActionLayoutData actionLayoutData : menuSection.getActions()) {
+                for (final ServiceActionLayoutData actionLayoutData : menuSection.getServiceActions()) {
                     final String objectType = actionLayoutData.getObjectType();
                     final Bookmark bookmark = new Bookmark(objectType, PersistenceSession.SERVICE_IDENTIFIER);
                     final String oid = bookmark.toString();
diff --git a/example/application/helloworld/src/main/java/domainapp/application/menubars.layout.xml b/example/application/helloworld/src/main/java/domainapp/application/menubars.layout.xml
index 9adb982..7ac2178 100644
--- a/example/application/helloworld/src/main/java/domainapp/application/menubars.layout.xml
+++ b/example/application/helloworld/src/main/java/domainapp/application/menubars.layout.xml
@@ -1,88 +1,88 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<mnu:menuBars xsi:schemaLocation="http://isis.apache.org/applib/layout/menus http://isis.apache.org/applib/layout/menus/menus.xsd http://isis.apache.org/applib/layout/links http://isis.apache.org/applib/layout/links/links.xsd" xmlns:mnu="http://isis.apache.org/applib/layout/menus" xmlns:lnk="http://isis.apache.org/applib/layout/links" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-    <mnu:primary>
-        <mnu:menu>
-            <mnu:named>Hello World Objects</mnu:named>
-            <mnu:section>
-                <mnu:action objectType="helloworld.HelloWorldObjects" id="create">
-                    <mnu:named>Create</mnu:named>
-                </mnu:action>
-                <mnu:action objectType="helloworld.HelloWorldObjects" id="findByName">
-                    <mnu:named>Find By Name</mnu:named>
-                </mnu:action>
-                <mnu:action objectType="helloworld.HelloWorldObjects" id="listAll">
-                    <mnu:named>List All</mnu:named>
-                </mnu:action>
-            </mnu:section>
-        </mnu:menu>
-    </mnu:primary>
-    <mnu:secondary>
-        <mnu:menu>
-            <mnu:named>Prototyping</mnu:named>
-            <mnu:section>
-                <mnu:action objectType="isisApplib.FixtureScriptsDefault" id="runFixtureScript">
-                    <mnu:named>Run Fixture Script</mnu:named>
-                </mnu:action>
-                <mnu:action objectType="isisApplib.FixtureScriptsDefault" id="runFixtureScriptWithAutoComplete">
-                    <mnu:named>Run Fixture Script</mnu:named>
-                </mnu:action>
-                <mnu:action objectType="isisApplib.FixtureScriptsDefault" id="recreateObjectsAndReturnFirst">
-                    <mnu:named>Recreate Objects And Return First</mnu:named>
-                </mnu:action>
-            </mnu:section>
-            <mnu:section>
-                <mnu:action objectType="isisApplib.LayoutServiceMenu" id="downloadLayouts">
-                    <mnu:named>Download Object Layouts (ZIP)</mnu:named>
-                </mnu:action>
-                <mnu:action objectType="isisApplib.LayoutServiceMenu" id="downloadMenuBarsLayout">
-                    <mnu:named>Download Menu Bars Layout (XML)</mnu:named>
-                </mnu:action>
-            </mnu:section>
-            <mnu:section>
-                <mnu:action objectType="isisApplib.MetaModelServicesMenu" id="downloadMetaModel">
-                    <mnu:named>Download Meta Model (CSV)</mnu:named>
-                </mnu:action>
-            </mnu:section>
-            <mnu:section>
-                <mnu:action objectType="isisApplib.SwaggerServiceMenu" id="openSwaggerUi">
-                    <mnu:named>Open Swagger Ui</mnu:named>
-                </mnu:action>
-                <mnu:action objectType="isisApplib.SwaggerServiceMenu" id="openRestApi">
-                    <mnu:named>Open Rest Api</mnu:named>
-                </mnu:action>
-                <mnu:action objectType="isisApplib.SwaggerServiceMenu" id="downloadSwaggerSchemaDefinition">
-                    <mnu:named>Download Swagger Schema Definition</mnu:named>
-                </mnu:action>
-            </mnu:section>
-            <mnu:section>
-                <mnu:action objectType="isisApplib.TranslationServicePoMenu" id="downloadTranslations">
-                    <mnu:named>Download Translations</mnu:named>
-                </mnu:action>
-                <mnu:action objectType="isisApplib.TranslationServicePoMenu" id="resetTranslationCache">
-                    <mnu:named>Clear translation cache</mnu:named>
-                </mnu:action>
-                <mnu:action objectType="isisApplib.TranslationServicePoMenu" id="switchToReadingTranslations">
-                    <mnu:named>Switch To Reading Translations</mnu:named>
-                </mnu:action>
-                <mnu:action objectType="isisApplib.TranslationServicePoMenu" id="switchToWritingTranslations">
-                    <mnu:named>Switch To Writing Translations</mnu:named>
-                </mnu:action>
-            </mnu:section>
-            <mnu:section>
-                <mnu:action objectType="isisApplib.HsqlDbManagerMenu" id="hsqlDbManager">
-                    <mnu:named>HSQL DB Manager</mnu:named>
-                </mnu:action>
-            </mnu:section>
-        </mnu:menu>
-    </mnu:secondary>
-    <mnu:tertiary>
-        <mnu:menu>
-            <mnu:named>Configuration Service Menu</mnu:named>
-            <mnu:section>
-                <mnu:action objectType="isisApplib.ConfigurationServiceMenu" id="configuration">
-                    <mnu:named>Configuration</mnu:named>
-                </mnu:action>
-            </mnu:section>
-        </mnu:menu>
-    </mnu:tertiary>
-</mnu:menuBars>
+<mb3:menuBars xsi:schemaLocation="http://isis.apache.org/applib/layout/menubars/bootstrap3 http://isis.apache.org/applib/layout/menubars/bootstrap3/menubars.xsd http://isis.apache.org/applib/layout/component http://isis.apache.org/applib/layout/component/component.xsd http://isis.apache.org/applib/layout/links http://isis.apache.org/applib/layout/links/links.xsd" xmlns:cpt="http://isis.apache.org/applib/layout/component" xmlns:lnk="http://isis.apache.org/applib/layout/links" xmlns:mb3="h [...]
+    <mb3:primary>
+        <mb3:menu>
+            <mb3:named>Hello World Objects</mb3:named>
+            <mb3:section>
+                <mb3:serviceAction objectType="helloworld.HelloWorldObjects" id="create">
+                    <cpt:named>Create</cpt:named>
+                </mb3:serviceAction>
+                <mb3:serviceAction objectType="helloworld.HelloWorldObjects" id="findByName">
+                    <cpt:named>Find By Name</cpt:named>
+                </mb3:serviceAction>
+                <mb3:serviceAction objectType="helloworld.HelloWorldObjects" id="listAll">
+                    <cpt:named>List All</cpt:named>
+                </mb3:serviceAction>
+            </mb3:section>
+        </mb3:menu>
+    </mb3:primary>
+    <mb3:secondary>
+        <mb3:menu>
+            <mb3:named>Prototyping</mb3:named>
+            <mb3:section>
+                <mb3:serviceAction objectType="isisApplib.FixtureScriptsDefault" id="runFixtureScript">
+                    <cpt:named>Run Fixture Script</cpt:named>
+                </mb3:serviceAction>
+                <mb3:serviceAction objectType="isisApplib.FixtureScriptsDefault" id="runFixtureScriptWithAutoComplete">
+                    <cpt:named>Run Fixture Script</cpt:named>
+                </mb3:serviceAction>
+                <mb3:serviceAction objectType="isisApplib.FixtureScriptsDefault" id="recreateObjectsAndReturnFirst">
+                    <cpt:named>Recreate Objects And Return First</cpt:named>
+                </mb3:serviceAction>
+            </mb3:section>
+            <mb3:section>
+                <mb3:serviceAction objectType="isisApplib.LayoutServiceMenu" id="downloadLayouts">
+                    <cpt:named>Download Object Layouts (ZIP)</cpt:named>
+                </mb3:serviceAction>
+                <mb3:serviceAction objectType="isisApplib.LayoutServiceMenu" id="downloadMenuBarsLayout">
+                    <cpt:named>Download Menu Bars Layout (XML)</cpt:named>
+                </mb3:serviceAction>
+            </mb3:section>
+            <mb3:section>
+                <mb3:serviceAction objectType="isisApplib.MetaModelServicesMenu" id="downloadMetaModel">
+                    <cpt:named>Download Meta Model (CSV)</cpt:named>
+                </mb3:serviceAction>
+            </mb3:section>
+            <mb3:section>
+                <mb3:serviceAction objectType="isisApplib.SwaggerServiceMenu" id="openSwaggerUi">
+                    <cpt:named>Open Swagger Ui</cpt:named>
+                </mb3:serviceAction>
+                <mb3:serviceAction objectType="isisApplib.SwaggerServiceMenu" id="openRestApi">
+                    <cpt:named>Open Rest Api</cpt:named>
+                </mb3:serviceAction>
+                <mb3:serviceAction objectType="isisApplib.SwaggerServiceMenu" id="downloadSwaggerSchemaDefinition">
+                    <cpt:named>Download Swagger Schema Definition</cpt:named>
+                </mb3:serviceAction>
+            </mb3:section>
+            <mb3:section>
+                <mb3:serviceAction objectType="isisApplib.TranslationServicePoMenu" id="downloadTranslations">
+                    <cpt:named>Download Translations</cpt:named>
+                </mb3:serviceAction>
+                <mb3:serviceAction objectType="isisApplib.TranslationServicePoMenu" id="resetTranslationCache">
+                    <cpt:named>Clear translation cache</cpt:named>
+                </mb3:serviceAction>
+                <mb3:serviceAction objectType="isisApplib.TranslationServicePoMenu" id="switchToReadingTranslations">
+                    <cpt:named>Switch To Reading Translations</cpt:named>
+                </mb3:serviceAction>
+                <mb3:serviceAction objectType="isisApplib.TranslationServicePoMenu" id="switchToWritingTranslations">
+                    <cpt:named>Switch To Writing Translations</cpt:named>
+                </mb3:serviceAction>
+            </mb3:section>
+            <mb3:section>
+                <mb3:serviceAction objectType="isisApplib.HsqlDbManagerMenu" id="hsqlDbManager">
+                    <cpt:named>HSQL DB Manager</cpt:named>
+                </mb3:serviceAction>
+            </mb3:section>
+        </mb3:menu>
+    </mb3:secondary>
+    <mb3:tertiary>
+        <mb3:menu>
+            <mb3:named>Configuration Service Menu</mb3:named>
+            <mb3:section>
+                <mb3:serviceAction objectType="isisApplib.ConfigurationServiceMenu" id="configuration">
+                    <cpt:named>Configuration</cpt:named>
+                </mb3:serviceAction>
+            </mb3:section>
+        </mb3:menu>
+    </mb3:tertiary>
+</mb3:menuBars>

-- 
To stop receiving notification emails like this one, please contact
['"commits@isis.apache.org" <co...@isis.apache.org>'].