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 2014/07/18 07:27:28 UTC

[39/52] ISIS-839: renaming archetype directories.

http://git-wip-us.apache.org/repos/asf/isis/blob/b6954e56/example/archetype/todo-app/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/shiro.ini
----------------------------------------------------------------------
diff --git a/example/archetype/todo-app/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/shiro.ini b/example/archetype/todo-app/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/shiro.ini
deleted file mode 100644
index 2263069..0000000
--- a/example/archetype/todo-app/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/shiro.ini
+++ /dev/null
@@ -1,95 +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.
-#
-
-[main]
-
-#######
-# configure a couple of iniRealms
-# (nb: not possible for their .ini files to live in WEB-INF, because Shiro does not
-# provide a mechanism to load resources from that location)
-#######
-
-realm1 = org.apache.shiro.realm.text.IniRealm
-realm1.resourcePath=classpath:webapp/realm1.ini
-
-realm2 = org.apache.shiro.realm.text.IniRealm
-realm2.resourcePath=classpath:webapp/realm2.ini
-
-
-
-#######
-# configure an ldap-based realm
-#######
-
-contextFactory = org.apache.isis.security.shiro.IsisLdapContextFactory
-contextFactory.url = ldap://localhost:10389
-contextFactory.authenticationMechanism = CRAM-MD5
-contextFactory.systemAuthenticationMechanism = simple
-contextFactory.systemUsername = uid=admin,ou=system
-contextFactory.systemPassword = secret
-
-ldapRealm = org.apache.isis.security.shiro.IsisLdapRealm
-ldapRealm.contextFactory = $contextFactory
-
-ldapRealm.searchBase = ou=groups,o=mojo
-ldapRealm.groupObjectClass = groupOfUniqueNames
-ldapRealm.uniqueMemberAttribute = uniqueMember
-ldapRealm.uniqueMemberAttributeValueTemplate = uid={0}
-
-# optional mapping from physical groups to logical application roles
-#ldapRealm.rolesByGroup = \
-#    LDN_USERS: user_role,\
-#    NYK_USERS: user_role,\
-#    HKG_USERS: user_role,\
-#    GLOBAL_ADMIN: admin_role,\
-#    DEMOS: self-install_role
-
-# configuring ldapRealm role/perm mappings
-# (use same as realm1)
-ldapRealm.resourcePath=classpath:webapp/realm1.ini
-
-
-#######
-# configure security manager to use realm(s)
-#######
-
-# authenticate/authorize first with realm1, then realm2
-securityManager.realms = $realm1,$realm2
-
-
-# or to use ldap with realm1 as a backup...
-# (see docs for details of how to setup users/groups in Apache Directory Studio).
-#securityManager.realms = $ldapRealm,$realm1
-
-
-# or to just use this .ini file...
-# (would require [users] and [roles] to be set up)
-#securityManager.realms = $iniRealm
-
-
-
-# -----------------------------------------------------------------------------
-# Users and their assigned roles
-# -----------------------------------------------------------------------------
-
-[users]
-# unused (assuming not configured $iniRealm)
-
-[roles]
-# unused (assuming not configured $iniRealm)

http://git-wip-us.apache.org/repos/asf/isis/blob/b6954e56/example/archetype/todo-app/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/viewer_restfulobjects.properties
----------------------------------------------------------------------
diff --git a/example/archetype/todo-app/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/viewer_restfulobjects.properties b/example/archetype/todo-app/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/viewer_restfulobjects.properties
deleted file mode 100644
index 10cbce9..0000000
--- a/example/archetype/todo-app/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/viewer_restfulobjects.properties
+++ /dev/null
@@ -1,29 +0,0 @@
-#set( $symbol_pound = '#' )
-#set( $symbol_dollar = '$' )
-#set( $symbol_escape = '\' )
-${symbol_pound}  Licensed to the Apache Software Foundation (ASF) under one
-${symbol_pound}  or more contributor license agreements.  See the NOTICE file
-${symbol_pound}  distributed with this work for additional information
-${symbol_pound}  regarding copyright ownership.  The ASF licenses this file
-${symbol_pound}  to you under the Apache License, Version 2.0 (the
-${symbol_pound}  "License"); you may not use this file except in compliance
-${symbol_pound}  with the License.  You may obtain a copy of the License at
-${symbol_pound}  
-${symbol_pound}         http://www.apache.org/licenses/LICENSE-2.0
-${symbol_pound}         
-${symbol_pound}  Unless required by applicable law or agreed to in writing,
-${symbol_pound}  software distributed under the License is distributed on an
-${symbol_pound}  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-${symbol_pound}  KIND, either express or implied.  See the License for the
-${symbol_pound}  specific language governing permissions and limitations
-${symbol_pound}  under the License.
-
-${symbol_pound}
-${symbol_pound} configuration file for the Restful Objects viewer
-${symbol_pound}
-
-${symbol_pound} the baseUrl for hrefs in the events generated by the RO EventSerializer 
-isis.viewer.restfulobjects.RestfulObjectsSpecEventSerializer.baseUrl=http://localhost:8080/restful/
-
-${symbol_pound} renders param details in the (incorrect) form that they were for GSOC2013 viewers
-${symbol_pound} isis.viewer.restfulobjects.gsoc2013.legacyParamDetails=true
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/b6954e56/example/archetype/todo-app/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/viewer_wicket.properties
----------------------------------------------------------------------
diff --git a/example/archetype/todo-app/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/viewer_wicket.properties b/example/archetype/todo-app/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/viewer_wicket.properties
deleted file mode 100644
index f02c809..0000000
--- a/example/archetype/todo-app/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/viewer_wicket.properties
+++ /dev/null
@@ -1,58 +0,0 @@
-#set( $symbol_pound = '#' )
-#set( $symbol_dollar = '$' )
-#set( $symbol_escape = '\' )
-${symbol_pound}  Licensed to the Apache Software Foundation (ASF) under one
-${symbol_pound}  or more contributor license agreements.  See the NOTICE file
-${symbol_pound}  distributed with this work for additional information
-${symbol_pound}  regarding copyright ownership.  The ASF licenses this file
-${symbol_pound}  to you under the Apache License, Version 2.0 (the
-${symbol_pound}  "License"); you may not use this file except in compliance
-${symbol_pound}  with the License.  You may obtain a copy of the License at
-${symbol_pound}  
-${symbol_pound}         http://www.apache.org/licenses/LICENSE-2.0
-${symbol_pound}         
-${symbol_pound}  Unless required by applicable law or agreed to in writing,
-${symbol_pound}  software distributed under the License is distributed on an
-${symbol_pound}  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-${symbol_pound}  KIND, either express or implied.  See the License for the
-${symbol_pound}  specific language governing permissions and limitations
-${symbol_pound}  under the License.
-
-${symbol_pound}
-${symbol_pound} configuration file for the Wicket viewer
-${symbol_pound}
-
-${symbol_pound}
-${symbol_pound} The maximum length of titles to display in standalone or parented tables.
-${symbol_pound} Titles longer than this length will be truncated with trailing ellipses (...)
-${symbol_pound}
-${symbol_pound} For example, if set to 12, the title
-${symbol_pound} "Buy milk on 15-Feb-13" will be truncated to "Buy milk ..."
-${symbol_pound}
-${symbol_pound} If set to 0, then only the icon will be shown.
-${symbol_pound}
-isis.viewer.wicket.maxTitleLengthInStandaloneTables=0
-isis.viewer.wicket.maxTitleLengthInParentedTables=0
-
-
-isis.viewer.wicket.datePattern=dd-MM-yyyy
-isis.viewer.wicket.dateTimePattern=dd-MM-yyyy HH:mm
-isis.viewer.wicket.datePickerPattern=dd-mm-yy
-
-${symbol_pound}isis.viewer.wicket.datePattern=dd/MM/yy
-${symbol_pound}isis.viewer.wicket.dateTimePattern=dd/MM/yy HH:mm
-${symbol_pound}isis.viewer.wicket.datePickerPattern=dd/mm/y
-
-
-
-${symbol_pound} default is for wicket tags to be stripped in production (Isis SERVER mode == Wicket deployment mode), 
-${symbol_pound} not stripped otherwise (Isis' PROTOTYPE mode == Wicket's DEVELOPMENT mode)
-${symbol_pound} isis.viewer.wicket.stripWicketTags=false
-
-${symbol_pound}isis.viewer.wicket.suppressRememberMe=true
-${symbol_pound}isis.viewer.wicket.disableModalDialogs=true
-
-${symbol_pound}isis.viewer.wicket.bookmarkedPages.maxSize=15
-
-${symbol_pound}isis.viewer.wicket.regularCase=false
-

http://git-wip-us.apache.org/repos/asf/isis/blob/b6954e56/example/archetype/todo-app/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/example/archetype/todo-app/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/web.xml b/example/archetype/todo-app/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/web.xml
deleted file mode 100644
index d31ea09..0000000
--- a/example/archetype/todo-app/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/web.xml
+++ /dev/null
@@ -1,330 +0,0 @@
-#set( $symbol_pound = '#' )
-#set( $symbol_dollar = '$' )
-#set( $symbol_escape = '\' )
-<?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.
--->
-<web-app id="WebApp_ID" version="2.4"
-    xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
-
-    <display-name>Quickstart Wicket/RestfulObjects app</display-name>
-
-    <welcome-file-list>
-        <welcome-file>about/index.html</welcome-file>
-    </welcome-file-list>
-
-    <!-- shiro security configuration -->
-    <listener>
-        <listener-class>org.apache.shiro.web.env.EnvironmentLoaderListener</listener-class>
-    </listener>
-
-    <filter>
-        <filter-name>ShiroFilter</filter-name>
-        <filter-class>org.apache.shiro.web.servlet.ShiroFilter</filter-class>
-    </filter>
-
-    <filter-mapping>
-        <filter-name>ShiroFilter</filter-name>
-        <url-pattern>/*</url-pattern>
-    </filter-mapping>
-
-
-
-    <!-- which configuration directory to read overloaded property files from -->
-    <!-- 
-    Normally configuration like this should be done from outside your web 
-    application. Especially if your configuration is not know in advance or
-    if it can change depending on where the application gets deployed.
-    
-    For instance to configure this in Tomcat outside the application WAR add
-    the following line to your application context ( For more detail see:
-    http://tomcat.apache.org/tomcat-7.0-doc/config/context.html${symbol_pound}Context_Parameters )
-     
-    <Parameter name="isis.config.dir" value="/usr/local/tomcat/conf/"
-         override="true"/>
-         
-    If your configuration directory is fixed you can enable the following 
-    context parameter in here and forget about the outside part.
-         
-    <context-param>
-      <param-name>isis.config.dir</param-name>
-      <param-value>location of your config directory if fixed</param-value>
-    </context-param>
-    -->
-
-
-    <!--
-    determines which additional configuration files to search for 
-     -->
-    <context-param>
-        <param-name>isis.viewers</param-name>
-        <param-value>wicket,restfulobjects</param-value>
-    </context-param>
-
-
-    <!-- 
-    for diagnostics
-    -->
-    <filter>
-        <filter-name>IsisLogOnExceptionFilter</filter-name>
-        <filter-class>org.apache.isis.core.webapp.diagnostics.IsisLogOnExceptionFilter</filter-class>
-    </filter>
-    <filter-mapping>
-        <filter-name>IsisLogOnExceptionFilter</filter-name>
-        <url-pattern>/wicket/*</url-pattern>
-    </filter-mapping>
-    <filter-mapping>
-        <filter-name>IsisLogOnExceptionFilter</filter-name>
-        <url-pattern>/restful/*</url-pattern>
-    </filter-mapping>
-
-
-    <!-- cache static resources for 1 day -->
-    <filter>
-        <filter-name>ResourceCachingFilter</filter-name>
-        <filter-class>org.apache.isis.core.webapp.content.ResourceCachingFilter</filter-class>
-        <init-param>
-            <param-name>CacheTime</param-name>
-            <param-value>86400</param-value>
-        </init-param>
-    </filter>
-    <filter-mapping>
-        <filter-name>ResourceCachingFilter</filter-name>
-        <url-pattern>*.js</url-pattern>
-    </filter-mapping>
-    <filter-mapping>
-        <filter-name>ResourceCachingFilter</filter-name>
-        <url-pattern>*.css</url-pattern>
-    </filter-mapping>
-    <filter-mapping>
-        <filter-name>ResourceCachingFilter</filter-name>
-        <url-pattern>*.png</url-pattern>
-    </filter-mapping>
-    <filter-mapping>
-        <filter-name>ResourceCachingFilter</filter-name>
-        <url-pattern>*.jpg</url-pattern>
-    </filter-mapping>
-    <filter-mapping>
-        <filter-name>ResourceCachingFilter</filter-name>
-        <url-pattern>*.gif</url-pattern>
-    </filter-mapping>
-    <filter-mapping>
-        <filter-name>ResourceCachingFilter</filter-name>
-        <url-pattern>*.html</url-pattern>
-    </filter-mapping>
-    <filter-mapping>
-        <filter-name>ResourceCachingFilter</filter-name>
-        <url-pattern>*.swf</url-pattern>
-    </filter-mapping>
-    
-    <servlet>
-        <servlet-name>Resource</servlet-name>
-        <servlet-class>org.apache.isis.core.webapp.content.ResourceServlet</servlet-class>
-    </servlet>
-    <servlet-mapping>
-        <servlet-name>Resource</servlet-name>
-        <url-pattern>*.css</url-pattern>
-    </servlet-mapping>
-    <servlet-mapping>
-        <servlet-name>Resource</servlet-name>
-        <url-pattern>*.png</url-pattern>
-    </servlet-mapping>
-    <servlet-mapping>
-        <servlet-name>Resource</servlet-name>
-        <url-pattern>*.jpg</url-pattern>
-    </servlet-mapping>
-    <servlet-mapping>
-        <servlet-name>Resource</servlet-name>
-        <url-pattern>*.gif</url-pattern>
-    </servlet-mapping>
-    <servlet-mapping>
-        <servlet-name>Resource</servlet-name>
-        <url-pattern>*.js</url-pattern>
-    </servlet-mapping>
-    <servlet-mapping>
-        <servlet-name>Resource</servlet-name>
-        <url-pattern>*.html</url-pattern>
-    </servlet-mapping>
-    <servlet-mapping>
-        <servlet-name>Resource</servlet-name>
-        <url-pattern>*.swf</url-pattern>
-    </servlet-mapping>
-    
-
-
-    <!--
-    -
-    - config specific to the wicket-viewer
-    -
-    -->
-    <filter>
-        <filter-name>WicketFilter</filter-name>
-        <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
-        <init-param>
-            <param-name>applicationClassName</param-name>
-            <param-value>webapp.ToDoApplication</param-value>
-        </init-param>
-    </filter>
-    <filter-mapping>
-        <filter-name>WicketFilter</filter-name>
-        <url-pattern>/wicket/*</url-pattern>
-    </filter-mapping>
-
-
-    <context-param>
-        <param-name>configuration</param-name>
-        <!-- 
-        <param-value>deployment</param-value>
-         -->
-        <param-value>development</param-value>
-    </context-param>
-    
-   
-    <!--
-    -
-    - config specific to the restfulobjects-viewer
-    -
-    -->
-
-    <!--
-    THE FOLLOWING CONFIGURATION IS NOT REQUIRED IF THE WICKET VIEWER IS IN USE.
-    IF THE WICKET VIEWER CONFIGURATION IS REMOVED, THEN UNCOMMENT
-    
-    <listener>
-        <listener-class>org.apache.isis.core.webapp.IsisWebAppBootstrapper</listener-class>
-    </listener>
-
-    <context-param>
-        <param-name>deploymentType</param-name>
-        <param-value>SERVER_EXPLORATION</param-value>
-    </context-param>
-
-    <context-param>
-        <param-name>isis.viewers</param-name>
-        <param-value>restfulobjects</param-value>
-    </context-param>    
-    -->    
-    
-    <!-- bootstrap the RestEasy framework -->
-    <listener>
-        <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class>
-    </listener>
-
-    <!-- used by RestEasy to determine the JAX-RS resources and other related configuration -->
-    <context-param>
-        <param-name>javax.ws.rs.Application</param-name>
-        <param-value>org.apache.isis.viewer.restfulobjects.server.RestfulObjectsApplication</param-value>
-    </context-param>
-    
-    <context-param>
-        <param-name>resteasy.servlet.mapping.prefix</param-name>
-        <param-value>/restful/</param-value>
-    </context-param>
-    
-
-    <!-- authenticate user, set up an Isis session -->
-    <filter>
-        <filter-name>IsisSessionFilterForRestfulObjects</filter-name>
-        <filter-class>org.apache.isis.core.webapp.IsisSessionFilter</filter-class>
-        <!-- authentication required for REST -->
-        <init-param>
-            <param-name>authenticationSessionStrategy</param-name>
-            <param-value>org.apache.isis.viewer.restfulobjects.server.authentication.AuthenticationSessionStrategyBasicAuth</param-value>
-        </init-param>
-        <init-param>
-            <!-- what to do if no session was found; we indicate to issue a 401 basic authentication challenge -->
-            <param-name>whenNoSession</param-name>
-            <param-value>basicAuthChallenge</param-value>
-        </init-param>
-    </filter>
-    <filter-mapping>
-        <!-- this is mapped to the entire app; however the IsisSessionFilter will "notice" if the session filter has already been
-             executed for the request pipeline, and if so will do nothing -->
-        <filter-name>IsisSessionFilterForRestfulObjects</filter-name>
-        <servlet-name>RestfulObjectsRestEasyDispatcher</servlet-name>
-    </filter-mapping>
-
-    <filter>
-        <filter-name>IsisTransactionFilterForRestfulObjects</filter-name>
-        <filter-class>org.apache.isis.viewer.restfulobjects.server.webapp.IsisTransactionFilterForRestfulObjects</filter-class>
-    </filter>
-    <filter-mapping>
-        <filter-name>IsisTransactionFilterForRestfulObjects</filter-name>
-        <servlet-name>RestfulObjectsRestEasyDispatcher</servlet-name>
-    </filter-mapping>
-
-
-    <servlet>
-        <servlet-name>RestfulObjectsRestEasyDispatcher</servlet-name>
-        <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
-    </servlet>
-    <servlet-mapping>
-        <servlet-name>RestfulObjectsRestEasyDispatcher</servlet-name>
-        <url-pattern>/restful/*</url-pattern>
-    </servlet-mapping>
-
-
-    <!-- 
-    uncomment to use container-managed datasource;
-    for both container-managed (JTA) and non-container-managed transactions
-     -->
-     <!-- 
-    <resource-ref>
-        <description>db</description>
-        <res-ref-name>jdbc/quickstart</res-ref-name>
-        <res-type>javax.sql.DataSource</res-type>
-        <res-auth>Container</res-auth>
-    </resource-ref>
-      -->
-
-    <!--
-    uncomment to use container-managed datasource
-    with container-managed transactions (JTA).
-    -->
-    <!-- 
-    <resource-ref>
-        <description>db</description>
-        <res-ref-name>jdbc/quickstart-nontx</res-ref-name>
-        <res-type>javax.sql.DataSource</res-type>
-        <res-auth>Container</res-auth>
-    </resource-ref>
-     -->
-
-
-    <servlet>
-         <servlet-name>QuartzInitializer</servlet-name>
-         <servlet-class>org.quartz.ee.servlet.QuartzInitializerServlet</servlet-class>
-         <init-param>
-             <param-name>config-file</param-name>
-             <param-value>webapp/scheduler/quartz.properties</param-value>
-         </init-param>
-         <init-param>
-             <param-name>shutdown-on-unload</param-name>
-             <param-value>true</param-value>
-         </init-param>
-         <init-param>
-             <param-name>start-scheduler-on-load</param-name>
-             <param-value>true</param-value>
-         </init-param>
-         <load-on-startup>1</load-on-startup>
-     </servlet>
-
-
-</web-app>

http://git-wip-us.apache.org/repos/asf/isis/blob/b6954e56/example/archetype/todo-app/src/main/resources/archetype-resources/webapp/src/main/webapp/about/images/isis-logo.png
----------------------------------------------------------------------
diff --git a/example/archetype/todo-app/src/main/resources/archetype-resources/webapp/src/main/webapp/about/images/isis-logo.png b/example/archetype/todo-app/src/main/resources/archetype-resources/webapp/src/main/webapp/about/images/isis-logo.png
deleted file mode 100644
index 5284fe7..0000000
Binary files a/example/archetype/todo-app/src/main/resources/archetype-resources/webapp/src/main/webapp/about/images/isis-logo.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis/blob/b6954e56/example/archetype/todo-app/src/main/resources/archetype-resources/webapp/src/main/webapp/about/index.html
----------------------------------------------------------------------
diff --git a/example/archetype/todo-app/src/main/resources/archetype-resources/webapp/src/main/webapp/about/index.html b/example/archetype/todo-app/src/main/resources/archetype-resources/webapp/src/main/webapp/about/index.html
deleted file mode 100644
index e461216..0000000
--- a/example/archetype/todo-app/src/main/resources/archetype-resources/webapp/src/main/webapp/about/index.html
+++ /dev/null
@@ -1,215 +0,0 @@
-#set( $symbol_pound = '#' )
-#set( $symbol_dollar = '$' )
-#set( $symbol_escape = '\' )
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-         http://www.apache.org/licenses/LICENSE-2.0
-         
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT 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>
-    <head>
-        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-        <title>Apache Isis&trade; QuickStart (Wicket/Restful/JDO/Shiro) App</title>
-        
-        <style type="text/css">
-body {
-    background-color: ${symbol_pound}1A467B;
-    font-family: Verdana, Helvetica, Arial;
-    font-size: 90%;
-}
-
-li {
-    margin-top: 6px;
-    margin-bottom: 6px;
-}
-table {
-    border-collapse: collapse;
-}
-table, th, td {
-    border: 1px;
-    border-style: solid;
-    border-color: lightgray;
-}
-th, td {
-    padding: 10px;
-}
-${symbol_pound}wrapper {
-    background-color: ${symbol_pound}ffffff;
-    width: 900px;
-    margin: 8px auto;
-    padding: 12px;
-}
-        </style>
-    </head>
-    <body>
-        <div id="wrapper">
-            <img alt="Isis Logo" src="about/images/isis-logo.png" />
-             
-            <p>
-            <a href="http://isis.apache.org">Apache Isis</a>&trade; is a framework to let you rapidly develop 
-            domain-driven apps in Java.  This app has been generated using Isis' 
-            <a href="http://isis.apache.org/getting-started/quickstart-archetype.html">quickstart</a> archetype, 
-            which configures Isis' most commonly used components as part of a straightforward
-            &quot;todo&quot; app.  
-            
-            <p>
-            The app itself consists of a single domain class, <tt>ToDoItem</tt>, along with a number of supporting 
-            services.  You are free to strip it back and reuse for your own purposes.
-            </p>
-            
-            <p>
-            Alternatively, if stripping back this app is too much work, you might want to start with the even simpler 
-            <a href="http://isis.apache.org/getting-started/simple-archetype.html">simple</a> archetype, and use this
-            app by way of reference.
-            </p>
-            
-            <p>
-            The Isis components that are configured in this app are:
-            </p>
-            
-            <table>
-                <tr>
-                    <th>Component</th>
-                    <th>Access URL</th>
-                    <th>Description</th>
-                    <th>Further info on the Isis website</th>
-                </tr>
-                <tr>
-                    <td>Wicket Viewer</td>
-                    <td><a href="wicket/">wicket/</a></td>
-                    <td>Provides a generic UI for end-users, built with <a href="http://wicket.apache.org">Apache Wicket</a>&trade;</td>
-                    <td><a href="http://isis.apache.org/components/viewers/wicket/about.html">wicket viewer</a></td>
-                </tr>
-                <tr>
-                    <td>RestfulObjects Viewer</td>
-                    <td><a href="restful/">restful/</a></td>
-                    <td>Provides a RESTful API conformant with the <a href="http://restfulobjects.org">Restful Objects</a> spec</td>
-                    <td><a href="http://isis.apache.org/components/viewers/restfulobjects/about.html">restfulobjects viewer</a></td>
-                </tr>
-                <tr>
-                    <td>JDO Object&nbsp;Store</td>
-                    <td>n/a</td>
-                    <td>Persists objects using JDO/DataNucleus; configured to use HSQLDB in-memory database</td>
-                    <td><a href="http://isis.apache.org/components/objectstores/jdo/about.html">jdo&nbsp;objectstore</a></td>
-                </tr>
-                <tr>
-                    <td>Shiro Security</td>
-                    <td>n/a</td>
-                    <td>Provides authentication and authorization, using <a href="http://shiro.apache.org">Apache Shiro</a>&trade;</td>
-                    <td><a href="http://isis.apache.org/components/security/shiro/about.html">shiro security</a></td>
-                </tr>
-            </table>
-
-            <p>
-            The default user/password is <i>sven/pass</i> (as configured in the 
-            <a href="https://github.com/apache/isis/blob/master/example/application/quickstart%5Fwicket_restful_jdo/webapp/src/main/webapp/WEB-INF/shiro.ini">shiro.ini</a> file).
-            </p>
-    
-            <h2>App contents</h2>
-            <p>The key files in this &quot;todo&quot; app are:</p>
-            <!-- the hrefs below are partially URL encoded to prevent them from being modified when the archetype is created -->
-            <ul>
-              <li>Domain classes (todo functionality) (in <tt>dom</tt> module)
-                  <ul>
-                  <li><a href="https://github.com/apache/isis/blob/master/example/application/quickstart%5Fwicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItem.java"><tt>ToDoItem</tt></a> domain entity
-                  </li>
-                  <li><a href="https://github.com/apache/isis/blob/master/example/application/quickstart%5Fwicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItems.java"><tt>ToDoItems</tt></a> domain service (repository/factory)
-                  </li>
-                  <li><a href="https://github.com/apache/isis/blob/master/example/application/quickstart%5Fwicket_restful_jdo/dom/src/main/java/app/ToDoItemAnalysis.java"><tt>ToDoItemAnalysis</tt></a> application service analysing todo items
-                  </li>
-                  <li><a href="https://github.com/apache/isis/blob/master/example/application/quickstart%5Fwicket_restful_jdo/dom/src/main/java/app/ToDoAppDashboard.java"><tt>ToDoAppDashboard</tt></a> dashboard application service
-                  </li>
-                  </ul>
-              </li>
-              <li>Fixture classes (in <tt>fixture</tt> module and <tt>webapp</tt> module)
-                <ul>
-                  <li><a href="https://github.com/apache/isis/blob/master/example/application/quickstart%5Fwicket_restful_jdo/fixture/src/main/java/fixture/todo/ToDoItemsFixture.java"><tt>ToDoItemsFixture</tt></a> example fixture data (since configured for in-memory HSQLDB)
-                  </li>
-                  <li><a href="https://github.com/apache/isis/blob/master/example/application/quickstart%5Fwicket_restful_jdo/webapp/src/main/java/webapp/prototyping/ToDoItemsFixturesService.java"><tt>ToDoItemsFixtureService</tt></a> domain service to install fixtures at run-time
-                  </li>
-                </ul>
-              </li>
-              <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/quickstart%5Fwicket_restful_jdo/webapp/src/main/webapp/WEB-INF/web.xml">WEB-INF/web.xml</a></tt> (in <tt>webapp</tt> module)
-                <ul>
-                  <li><tt>AboutPageFilter</tt> - filter that redirects to this page 
-                  </li>
-                  <li><tt>ResourceCachingFilter</tt> and <tt>ResourceServlet</tt> - filter and servlet for serving up static resources. 
-                  </li>
-                  <li><tt>WicketFilter</tt> - filter for the wicket application, mapped to <tt>/wicket/*</tt> 
-                  </li>
-                  <li><tt>ResteasyBootstrap</tt>, <tt>IsisSessionFilterForRestfulObjects</tt>, <tt>RestfulObjectsRestEasyDispatcher</tt> - listeners, filters and servlets to bootstrap and map restful objects viewer to <tt>/restful/*</tt>. 
-                  </li>
-                  <li>commented out <tt>IsisWebAppBootstrapper</tt> listener; this is NOT required unless wicket viewer config is removed 
-                  </li>
-                </ul>
-              </li>
-              <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/quickstart%5Fwicket_restful_jdo/webapp/src/main/webapp/WEB-INF/isis.properties">WEB-INF/isis.properties</a></tt> (in <tt>webapp</tt> module)
-                <ul>
-                  <li><tt>isis.services</tt> - specifies the two domain services described above (<tt>ToDoItems</tt> and <tt>ToDoItemsFixtureService</tt>), appearing on the menu bar in the Wicket viewer, 
-                  along with a number of hidden framework-provided domain services demonstrating Isis' support for publishing, auditing and customizable error handling 
-                  </li>
-                  <li><tt>isis.persistor</tt> - specifies to use the JDO object store
-                  </li>
-                  <li><tt>isis.authentication</tt> and <tt>isis.authorization</tt> - security mechanism to use (<tt>bypass</tt> effectively disables) 
-                  </li>
-                </ul>
-              </li>
-              <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/quickstart%5Fwicket_restful_jdo/webapp/src/main/webapp/WEB-INF/persistor_datanucleus.properties">WEB-INF/persistor_datanucleus.properties</a></tt> (in <tt>webapp</tt> module)
-                <ul>
-                  <li>configuration for JDO object store 
-                  </li>
-                </ul>
-              </li>
-              <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/quickstart%5Fwicket_restful_jdo/webapp/src/main/webapp/WEB-INF/persistor.properties">WEB-INF/persistor.properties</a></tt> (in <tt>webapp</tt> module)
-                <ul>
-                  <li>JDBC URL for JDO object store 
-                  </li>
-                </ul>
-              </li>
-              <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/quickstart%5Fwicket_restful_jdo/webapp/src/main/webapp/WEB-INF/shiro.ini">WEB-INF/shiro.ini</a></tt> (in <tt>webapp</tt> module)
-                <ul>
-                  <li>configuration for Shiro security
-                  </li>
-                </ul>
-              </li>
-            </ul>
-    
-            <h2>Next steps</h2>
-            <p>Use the following as a check-list for refactoring towards your own application:
-            <ul>
-              <li>Experiment with users, roles and permissions (in <tt>shiro.ini</tt>)
-              </li>
-              <li>Refactor the <tt>ToDoItem</tt>, <tt>ToDoItems</tt> and <tt>ToDoItemsJdo</tt> towards your own application's functionality; obviously you are likely to introduce many more classes and services
-              </li>
-              <li>Reconfigure <tt>persistor.properties</tt> to specify the JDBC URL to the database you wish to work with; if necessary also update the <tt>pom.xml</tt> in the <tt>webapp</tt> module to add the JDBC driver to the classpath
-              </li>
-              <li>Fine-tune other RDBMS settings in <tt>persistor_datanucleus.properties</tt>
-              </li>
-              <li>Assuming you are using a persistent data store, then remove the <tt>ToDoItemsFixtureService</tt> from the <tt>isis.properties</tt> file (<tt>isis.services</tt> key).  Alternatively you could keep but refactor to provide a similar service for your own application's domain.    
-              </li>
-              <li>Replace (or remove) the publishing and auditing service implementations.
-              </li>
-              <li>If you want the wicket viewer but NOT the restful objects viewer, then remove/comment out the <tt>ResteasyBootstrap</tt>, <tt>IsisSessionFilterForRestfulObjects</tt>, <tt>RestfulObjectsRestEasyDispatcher</tt> from <tt>web.xml</tt>
-              </li>
-              <li>If you want the restful objects viewer but NOT the wicket viewer, then remove/comment out the <tt>WicketFilter</tt> filter and uncomment the <tt>IsisWebAppBootstrapper</tt> listener in <tt>web.xml</tt>
-              </li>
-              <li>Update this page (<tt>about/index.html</tt>) as required for your application, and/or remove the <tt>welcome-file-list</tt> from <tt>web.xml</tt>
-              </li>
-            </ul>
-        </div>
-    </body>
-</html>

http://git-wip-us.apache.org/repos/asf/isis/blob/b6954e56/example/archetype/todo-app/src/main/resources/archetype-resources/webapp/src/main/webapp/css/application.css
----------------------------------------------------------------------
diff --git a/example/archetype/todo-app/src/main/resources/archetype-resources/webapp/src/main/webapp/css/application.css b/example/archetype/todo-app/src/main/resources/archetype-resources/webapp/src/main/webapp/css/application.css
deleted file mode 100644
index 639d1c3..0000000
--- a/example/archetype/todo-app/src/main/resources/archetype-resources/webapp/src/main/webapp/css/application.css
+++ /dev/null
@@ -1,80 +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.
- */
-
-/*
-uncomment to add a logo (in an ../images directory relative to this file)
-
-#header {
-    height: 48px;
-    background-image: url("../images/logo.png");
-	background-repeat: no-repeat;
-}
-
-#header h1 {
-	display: none;
-}
-*/
-
-/*
-example: uncomment to hide the icon
-
-.entityIconAndTitlePanel a img {
-	display: none;
-}
-*/
-
-/*
-example: uncomment to hide the sliding bookmark panel
-
-#bookmarkedPagesSlidingDiv {
-	display: none;
-}
-.showPanelTab {
-	display: none;
-}
-*/
-
-/*
-example: uncomment to hide the text for the 'notes' field
-div.ToDoItem-notes span.scalarValue {
-    display: none;
-}
-*/
-
-
-.entityActions .cssMenuPanel .menuh li.x-caution a,
-li.x-caution a {
-    background-color: #C94316;
-}
-.entityCombined .entityActions .cssMenuPanel .menuh li.x-caution a:hover {
-    background-color:#20B5C2;
-}	
-
-.entityActions .cssMenuPanel .menuh li.x-highlight a,
-li.x-highlight a {
-    background-color: #51A95C;
-}
-.entityCombined .entityActions .cssMenuPanel .menuh li.x-highlight a:hover {
-    background-color:#20B5C2;
-}   
-
-div.x-key span.scalarName {
-	color: red;
-}
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/b6954e56/example/archetype/todo-app/src/main/resources/archetype-resources/webapp/src/main/webapp/images/spinning-icon.gif
----------------------------------------------------------------------
diff --git a/example/archetype/todo-app/src/main/resources/archetype-resources/webapp/src/main/webapp/images/spinning-icon.gif b/example/archetype/todo-app/src/main/resources/archetype-resources/webapp/src/main/webapp/images/spinning-icon.gif
deleted file mode 100644
index 75e3b1e..0000000
Binary files a/example/archetype/todo-app/src/main/resources/archetype-resources/webapp/src/main/webapp/images/spinning-icon.gif and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis/blob/b6954e56/example/archetype/todo-app/src/main/resources/archetype-resources/webapp/src/main/webapp/scripts/application.js
----------------------------------------------------------------------
diff --git a/example/archetype/todo-app/src/main/resources/archetype-resources/webapp/src/main/webapp/scripts/application.js b/example/archetype/todo-app/src/main/resources/archetype-resources/webapp/src/main/webapp/scripts/application.js
deleted file mode 100644
index d8cf6fe..0000000
--- a/example/archetype/todo-app/src/main/resources/archetype-resources/webapp/src/main/webapp/scripts/application.js
+++ /dev/null
@@ -1,3 +0,0 @@
-$(document).ready(function() {
-	/// here...
-});
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/b6954e56/example/archetype/todo-app/src/test/resources/projects/basic/archetype.properties
----------------------------------------------------------------------
diff --git a/example/archetype/todo-app/src/test/resources/projects/basic/archetype.properties b/example/archetype/todo-app/src/test/resources/projects/basic/archetype.properties
deleted file mode 100644
index 89bcac7..0000000
--- a/example/archetype/todo-app/src/test/resources/projects/basic/archetype.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-#Mon Jun 02 13:50:06 BST 2014
-package=it.pkg
-version=0.1-SNAPSHOT
-groupId=archetype.it
-artifactId=basic

http://git-wip-us.apache.org/repos/asf/isis/blob/b6954e56/example/archetype/todo-app/src/test/resources/projects/basic/goal.txt
----------------------------------------------------------------------
diff --git a/example/archetype/todo-app/src/test/resources/projects/basic/goal.txt b/example/archetype/todo-app/src/test/resources/projects/basic/goal.txt
deleted file mode 100644
index e69de29..0000000

http://git-wip-us.apache.org/repos/asf/isis/blob/b6954e56/example/archetype/todoapp/pom.xml
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/pom.xml b/example/archetype/todoapp/pom.xml
new file mode 100644
index 0000000..90d7b9c
--- /dev/null
+++ b/example/archetype/todoapp/pom.xml
@@ -0,0 +1,50 @@
+<?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/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.isis.archetype</groupId>
+  <artifactId>quickstart_wicket_restful_jdo-archetype</artifactId>
+  <version>1.6.0-SNAPSHOT</version>
+  <packaging>maven-archetype</packaging>
+  <name>quickstart_wicket_restful_jdo-archetype</name>
+  <build>
+    <extensions>
+      <extension>
+        <groupId>org.apache.maven.archetype</groupId>
+        <artifactId>archetype-packaging</artifactId>
+        <version>2.2</version>
+      </extension>
+    </extensions>
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <artifactId>maven-archetype-plugin</artifactId>
+          <version>2.2</version>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+  </build>
+  <parent>
+    <groupId>org.apache.isis.core</groupId>
+    <artifactId>isis</artifactId>
+    <version>1.6.0-SNAPSHOT</version>
+    <relativePath>../../../core/pom.xml</relativePath>
+  </parent>
+</project>

http://git-wip-us.apache.org/repos/asf/isis/blob/b6954e56/example/archetype/todoapp/src/main/appended-resources/supplemental-models.xml
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/appended-resources/supplemental-models.xml b/example/archetype/todoapp/src/main/appended-resources/supplemental-models.xml
new file mode 100644
index 0000000..01c58d8
--- /dev/null
+++ b/example/archetype/todoapp/src/main/appended-resources/supplemental-models.xml
@@ -0,0 +1,26 @@
+<?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">
+
+</supplementalDataModels>

http://git-wip-us.apache.org/repos/asf/isis/blob/b6954e56/example/archetype/todoapp/src/main/resources/META-INF/maven/archetype-metadata.xml
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/META-INF/maven/archetype-metadata.xml b/example/archetype/todoapp/src/main/resources/META-INF/maven/archetype-metadata.xml
new file mode 100644
index 0000000..6e02d99
--- /dev/null
+++ b/example/archetype/todoapp/src/main/resources/META-INF/maven/archetype-metadata.xml
@@ -0,0 +1,165 @@
+<?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.
+-->
+<archetype-descriptor xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0" xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0 http://maven.apache.org/xsd/archetype-descriptor-1.0.0.xsd" name="quickstart_wicket_restful_jdo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modules>
+    <module id="${rootArtifactId}-dom" dir="dom" name="${rootArtifactId}-dom">
+      <fileSets>
+        <fileSet filtered="true" encoding="UTF-8">
+          <directory>src/main/java</directory>
+          <includes>
+            <include>**/*.xml</include>
+            <include>**/*.java</include>
+          </includes>
+        </fileSet>
+        <fileSet encoding="UTF-8">
+          <directory>src/main/java</directory>
+          <includes>
+            <include>**/*.json</include>
+          </includes>
+        </fileSet>
+        <fileSet filtered="true" encoding="UTF-8">
+          <directory>src/main/resources</directory>
+          <includes>
+            <include>**/*.xml</include>
+          </includes>
+        </fileSet>
+        <fileSet encoding="UTF-8">
+          <directory>src/main/resources</directory>
+          <includes>
+            <include>**/*.png</include>
+          </includes>
+        </fileSet>
+        <fileSet filtered="true" encoding="UTF-8">
+          <directory>src/test/java</directory>
+          <includes>
+            <include>**/*.java</include>
+          </includes>
+        </fileSet>
+        <fileSet filtered="true" encoding="UTF-8">
+          <directory/>
+          <includes>
+            <include>log4j.properties</include>
+          </includes>
+        </fileSet>
+      </fileSets>
+    </module>
+    <module id="${rootArtifactId}-fixture" dir="fixture" name="${rootArtifactId}-fixture">
+      <fileSets>
+        <fileSet filtered="true" encoding="UTF-8">
+          <directory>src/main/java</directory>
+          <includes>
+            <include>**/*.java</include>
+          </includes>
+        </fileSet>
+        <fileSet encoding="UTF-8">
+          <directory/>
+          <includes>
+            <include>.gitignore</include>
+          </includes>
+        </fileSet>
+      </fileSets>
+    </module>
+    <module id="${rootArtifactId}-integtests" dir="integtests" name="${rootArtifactId}-integtests">
+      <fileSets>
+        <fileSet filtered="true" encoding="UTF-8">
+          <directory>src/test/java</directory>
+          <includes>
+            <include>**/*.java</include>
+          </includes>
+        </fileSet>
+        <fileSet encoding="UTF-8">
+          <directory>src/test/java</directory>
+          <includes>
+            <include>**/*.feature</include>
+          </includes>
+        </fileSet>
+        <fileSet filtered="true" encoding="UTF-8">
+          <directory/>
+          <includes>
+            <include>logging.properties</include>
+          </includes>
+        </fileSet>
+      </fileSets>
+    </module>
+    <module id="${rootArtifactId}-webapp" dir="webapp" name="${rootArtifactId}-webapp">
+      <fileSets>
+        <fileSet filtered="true" encoding="UTF-8">
+          <directory>src/main/java</directory>
+          <includes>
+            <include>**/*.java</include>
+          </includes>
+        </fileSet>
+        <fileSet filtered="true" encoding="UTF-8">
+          <directory>src/main/webapp</directory>
+          <includes>
+            <include>**/*.xml</include>
+            <include>**/*.html</include>
+            <include>**/*.properties</include>
+          </includes>
+        </fileSet>
+        <fileSet filtered="true" encoding="UTF-8">
+          <directory>src/main/resources</directory>
+          <includes>
+            <include>**/*.html</include>
+            <include>**/*.xml</include>
+            <include>**/*.properties</include>
+          </includes>
+        </fileSet>
+        <fileSet encoding="UTF-8">
+          <directory>src/main/jettyconsole</directory>
+          <includes>
+            <include>**/*.png</include>
+            <include>**/*.pdn</include>
+          </includes>
+        </fileSet>
+        <fileSet encoding="UTF-8">
+          <directory>src/main/webapp</directory>
+          <includes>
+            <include>**/*.passwords</include>
+            <include>**/*.allow</include>
+            <include>**/*.png</include>
+            <include>**/*.js</include>
+            <include>**/*.ini</include>
+            <include>**/*.gif</include>
+            <include>**/*.css</include>
+          </includes>
+        </fileSet>
+        <fileSet encoding="UTF-8">
+          <directory>src/main/resources</directory>
+          <includes>
+            <include>**/*.ini</include>
+          </includes>
+        </fileSet>
+        <fileSet encoding="UTF-8">
+          <directory>lib</directory>
+          <includes>
+            <include>**/*.gitignore</include>
+          </includes>
+        </fileSet>
+        <fileSet filtered="true" encoding="UTF-8">
+          <directory>ide/eclipse</directory>
+          <includes>
+            <include>**/*.launch</include>
+          </includes>
+        </fileSet>
+      </fileSets>
+    </module>
+  </modules>
+</archetype-descriptor>

http://git-wip-us.apache.org/repos/asf/isis/blob/b6954e56/example/archetype/todoapp/src/main/resources/archetype-resources/dom/log4j.properties
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/log4j.properties b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/log4j.properties
new file mode 100644
index 0000000..2040d89
--- /dev/null
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/log4j.properties
@@ -0,0 +1,44 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+${symbol_pound}  Licensed to the Apache Software Foundation (ASF) under one
+${symbol_pound}  or more contributor license agreements.  See the NOTICE file
+${symbol_pound}  distributed with this work for additional information
+${symbol_pound}  regarding copyright ownership.  The ASF licenses this file
+${symbol_pound}  to you under the Apache License, Version 2.0 (the
+${symbol_pound}  "License"); you may not use this file except in compliance
+${symbol_pound}  with the License.  You may obtain a copy of the License at
+${symbol_pound}  
+${symbol_pound}         http://www.apache.org/licenses/LICENSE-2.0
+${symbol_pound}         
+${symbol_pound}  Unless required by applicable law or agreed to in writing,
+${symbol_pound}  software distributed under the License is distributed on an
+${symbol_pound}  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+${symbol_pound}  KIND, either express or implied.  See the License for the
+${symbol_pound}  specific language governing permissions and limitations
+${symbol_pound}  under the License.
+
+${symbol_pound} LOG4J Configuration
+${symbol_pound} ===================
+
+${symbol_pound} 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
+${symbol_pound}log4j.appender.A1.Threshold=INFO
+
+${symbol_pound} Categories
+${symbol_pound} Each category can be set to a "level", and to direct to an appender
+
+${symbol_pound} 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
+
+
+${symbol_pound} 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/b6954e56/example/archetype/todoapp/src/main/resources/archetype-resources/dom/pom.xml
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/pom.xml b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/pom.xml
new file mode 100644
index 0000000..d8ad66c
--- /dev/null
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/pom.xml
@@ -0,0 +1,123 @@
+<?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>${groupId}</groupId>
+    	<artifactId>${rootArtifactId}</artifactId>
+        <version>${version}</version>
+	</parent>
+
+	<artifactId>${artifactId}</artifactId>
+	<name>Quickstart Wicket/Restful/JDO DOM</name>
+
+	<build>
+        <resources>
+            <resource>
+                <directory>src/main/resources</directory>
+            </resource>
+            <resource>
+                <directory>src/main/java</directory>
+                <includes>
+                    <include>**</include>
+                </includes>
+                <excludes>
+                    <exclude>**/*.java</exclude>
+                </excludes>
+            </resource>
+        </resources>
+		<plugins>
+            <plugin>
+                <groupId>org.datanucleus</groupId>
+                <artifactId>datanucleus-maven-plugin</artifactId>
+                <version>${datanucleus-maven-plugin.version}</version>
+                <configuration>
+                	<fork>false</fork>
+                    <log4jConfiguration>${basedir}/log4j.properties</log4jConfiguration>
+                    <verbose>true</verbose>
+                    <props>${basedir}/datanucleus.properties</props>
+                </configuration>
+                <executions>
+                    <execution>
+                        <phase>compile</phase>
+                        <goals>
+                            <goal>enhance</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+		</plugins>
+		<pluginManagement>
+			<plugins>
+				<!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
+				<plugin>
+					<groupId>org.eclipse.m2e</groupId>
+					<artifactId>lifecycle-mapping</artifactId>
+					<version>1.0.0</version>
+					<configuration>
+						<lifecycleMappingMetadata>
+							<pluginExecutions>
+								<pluginExecution>
+									<pluginExecutionFilter>
+										<groupId>org.datanucleus</groupId>
+										<artifactId>datanucleus-maven-plugin</artifactId>
+										<versionRange>[3.2.0-release,)</versionRange>
+										<goals>
+											<goal>enhance</goal>
+										</goals>
+									</pluginExecutionFilter>
+									<action>
+										<ignore></ignore>
+									</action>
+								</pluginExecution>
+							</pluginExecutions>
+						</lifecycleMappingMetadata>
+					</configuration>
+				</plugin>
+			</plugins>
+		</pluginManagement>
+	</build>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.apache.isis.core</groupId>
+			<artifactId>isis-core-applib</artifactId>
+		</dependency>
+
+		<dependency>
+            <groupId>org.apache.isis.objectstore</groupId>
+			<artifactId>isis-objectstore-jdo-applib</artifactId>
+		</dependency>
+        
+		<dependency>
+            <groupId>org.apache.isis.core</groupId>
+			<artifactId>isis-core-unittestsupport</artifactId>
+            <scope>test</scope>
+		</dependency>
+
+        <!-- Bytecode libraries (for mocking) -->
+        <dependency>
+            <groupId>org.objenesis</groupId>
+            <artifactId>objenesis</artifactId>
+            <scope>test</scope>
+        </dependency>
+	</dependencies>
+    
+</project>

http://git-wip-us.apache.org/repos/asf/isis/blob/b6954e56/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/META-INF/persistence.xml
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/META-INF/persistence.xml b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/META-INF/persistence.xml
new file mode 100644
index 0000000..020d759
--- /dev/null
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/META-INF/persistence.xml
@@ -0,0 +1,29 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<?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.
+-->
+<persistence xmlns="http://java.sun.com/xml/ns/persistence"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">
+
+    <persistence-unit name="quickstart">
+    </persistence-unit>
+</persistence>

http://git-wip-us.apache.org/repos/asf/isis/blob/b6954e56/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoAppDashboard.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoAppDashboard.java b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoAppDashboard.java
new file mode 100644
index 0000000..bf007d5
--- /dev/null
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoAppDashboard.java
@@ -0,0 +1,92 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT 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 app;
+
+import java.util.List;
+
+import org.apache.isis.applib.AbstractViewModel;
+import org.apache.isis.applib.annotation.Disabled;
+import org.apache.isis.applib.annotation.Named;
+import org.apache.isis.applib.annotation.Render;
+import org.apache.isis.applib.annotation.Render.Type;
+
+public class ToDoAppDashboard extends AbstractViewModel {
+
+    //region > identification in the UI
+    // //////////////////////////////////////
+    public String title() {
+        return "Dashboard";
+    }
+    
+    public String iconName() {
+        return "Dashboard";
+    }
+    //endregion
+
+    //region > ViewModel contract
+    // //////////////////////////////////////
+
+    private String memento;
+    
+    @Override
+    public String viewModelMemento() {
+        return memento;
+    }
+
+    @Override
+    public void viewModelInit(String memento) {
+        this.memento = memento;
+    }
+
+    //endregion
+
+    //region > getAnalysisByCategory (collection)
+    // //////////////////////////////////////
+
+    @Named("By Category")
+    @Render(Type.EAGERLY)
+    @Disabled
+    public List<ToDoItemsByCategoryViewModel> getAnalysisByCategory() {
+        return toDoItemAnalysis.toDoItemsByCategory();
+    }
+    //endregion
+
+    //region > getAnalysisByDateRange (collection)
+    // //////////////////////////////////////
+    
+    @Named("By Date Range")
+    @Render(Type.EAGERLY)
+    @Disabled
+    public List<ToDoItemsByDateRangeViewModel> getAnalysisByDateRange() {
+        return toDoItemAnalysis.toDoItemsByDateRange();
+    }
+    //endregion
+
+    //region > injected services
+    // //////////////////////////////////////
+    
+    @javax.inject.Inject
+    private ToDoItemAnalysis toDoItemAnalysis;
+
+    //endregion
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/b6954e56/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoAppDashboard.layout.json
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoAppDashboard.layout.json b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoAppDashboard.layout.json
new file mode 100644
index 0000000..3421543
--- /dev/null
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoAppDashboard.layout.json
@@ -0,0 +1,26 @@
+{
+  "columns": [
+    {
+      "span": 0,
+      "memberGroups": {}
+    },
+    {
+      "span": 0,
+      "memberGroups": {}
+    },
+    {
+      "span": 0,
+      "memberGroups": {}
+    },
+    {
+      "span": 12,
+      "collections": {
+        "analysisByCategory": {}
+      }
+    }
+  ],
+  "actions": {
+    "downloadLayout": {},
+    "refreshLayout": {}
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/b6954e56/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoAppDashboardService.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoAppDashboardService.java b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoAppDashboardService.java
new file mode 100644
index 0000000..abd6268
--- /dev/null
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoAppDashboardService.java
@@ -0,0 +1,65 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT 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 app;
+
+import org.apache.isis.applib.DomainObjectContainer;
+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.HomePage;
+
+@Hidden
+public class ToDoAppDashboardService  {
+
+    //region > identification in the UI
+    // //////////////////////////////////////
+
+    private static final String ID = "dashboard";
+
+    public String getId() {
+        return ID;
+    }
+
+    public String iconName() {
+        return ID;
+    }
+    //endregion
+
+    //region > lookup (action)
+    // //////////////////////////////////////
+    @ActionSemantics(Of.SAFE)
+    @HomePage
+    public ToDoAppDashboard lookup() {
+        return container.newViewModelInstance(ToDoAppDashboard.class, ID);
+    }
+
+    //endregion
+
+    //region > injected services
+    // //////////////////////////////////////
+
+    @javax.inject.Inject
+    private DomainObjectContainer container;
+
+    //endregion
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/b6954e56/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemAnalysis.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemAnalysis.java b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemAnalysis.java
new file mode 100644
index 0000000..1d4c73b
--- /dev/null
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemAnalysis.java
@@ -0,0 +1,129 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT 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 app;
+
+import dom.todo.ToDoItem.Category;
+
+import java.util.Arrays;
+import java.util.List;
+import com.google.common.base.Function;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+import org.apache.isis.applib.DomainObjectContainer;
+import org.apache.isis.applib.annotation.*;
+import org.apache.isis.applib.annotation.ActionSemantics.Of;
+
+@Named("Analysis")
+public class ToDoItemAnalysis {
+
+
+    //region > identification in the UI
+    // //////////////////////////////////////
+
+    public String getId() {
+        return "analysis";
+    }
+
+    public String iconName() {
+        return "ToDoItem";
+    }
+    //endregion
+
+    //region > byCategory (action)
+    // //////////////////////////////////////
+
+    @Named("By Category")
+    @Bookmarkable
+    @ActionSemantics(Of.SAFE)
+    @MemberOrder(sequence = "1")
+    public List<ToDoItemsByCategoryViewModel> toDoItemsByCategory() {
+        final List<Category> categories = Arrays.asList(Category.values());
+        return Lists.newArrayList(Iterables.transform(categories, byCategory()));
+    }
+
+    private Function<Category, ToDoItemsByCategoryViewModel> byCategory() {
+        return new Function<Category, ToDoItemsByCategoryViewModel>(){
+             @Override
+             public ToDoItemsByCategoryViewModel apply(final Category category) {
+                 final ToDoItemsByCategoryViewModel byCategory = 
+                     container.newViewModelInstance(ToDoItemsByCategoryViewModel.class, category.name());
+                 byCategory.setCategory(category);
+                 return byCategory;
+             }
+         };
+    }
+
+    //endregion
+
+    //region > byDateRange (action)
+    // //////////////////////////////////////
+    
+    public enum DateRange {
+        OverDue,
+        Today,
+        Tomorrow,
+        ThisWeek,
+        Later,
+        Unknown,
+    }
+    
+    @Named("By Date Range")
+    @Bookmarkable
+    @ActionSemantics(Of.SAFE)
+    @MemberOrder(sequence = "1")
+    public List<ToDoItemsByDateRangeViewModel> toDoItemsByDateRange() {
+        final List<DateRange> dateRanges = Arrays.asList(DateRange.values());
+        return Lists.newArrayList(Iterables.transform(dateRanges, byDateRange()));
+    }
+
+    private Function<DateRange, ToDoItemsByDateRangeViewModel> byDateRange() {
+        return new Function<DateRange, ToDoItemsByDateRangeViewModel>(){
+             @Override
+             public ToDoItemsByDateRangeViewModel apply(final DateRange dateRange) {
+                 final ToDoItemsByDateRangeViewModel byDateRange = 
+                     container.newViewModelInstance(ToDoItemsByDateRangeViewModel.class, dateRange.name());
+                 byDateRange.setDateRange(dateRange);
+                 return byDateRange;
+             }
+         };
+    }
+    //endregion
+
+    //region > forCategory (programmatic)
+    // //////////////////////////////////////
+
+    @Programmatic
+    public ToDoItemsByCategoryViewModel toDoItemsForCategory(Category category) {
+        return byCategory().apply(category);
+    }
+
+    //endregion
+
+    //region > injected services
+    // //////////////////////////////////////
+
+    @javax.inject.Inject
+    private DomainObjectContainer container;
+
+    //endregion
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/b6954e56/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemAnalysisContributions.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemAnalysisContributions.java b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemAnalysisContributions.java
new file mode 100644
index 0000000..ead5e79
--- /dev/null
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemAnalysisContributions.java
@@ -0,0 +1,56 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT 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 app;
+
+import dom.todo.ToDoItem;
+
+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.NotContributed;
+import org.apache.isis.applib.annotation.NotContributed.As;
+import org.apache.isis.applib.annotation.NotInServiceMenu;
+
+@Hidden
+public class ToDoItemAnalysisContributions {
+
+
+    //region > analyseCategory (action)
+    // //////////////////////////////////////
+
+    @NotInServiceMenu
+    @NotContributed(As.ASSOCIATION)
+    @ActionSemantics(Of.SAFE)
+    public ToDoItemsByCategoryViewModel analyseCategory(final ToDoItem item) {
+        return toDoAppAnalysis.toDoItemsForCategory(item.getCategory());
+    }
+    //endregion
+
+    //region > injected services
+    // //////////////////////////////////////
+
+    @javax.inject.Inject
+    private ToDoItemAnalysis toDoAppAnalysis;
+
+    //endregion
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/b6954e56/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemsByCategoryViewModel.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemsByCategoryViewModel.java b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemsByCategoryViewModel.java
new file mode 100644
index 0000000..68f23b0
--- /dev/null
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemsByCategoryViewModel.java
@@ -0,0 +1,170 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT 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 app;
+
+import dom.todo.ToDoItem;
+import dom.todo.ToDoItem.Category;
+import dom.todo.ToDoItem.Subcategory;
+import dom.todo.ToDoItems;
+
+import java.util.Arrays;
+import java.util.List;
+import com.google.common.base.Function;
+import com.google.common.base.Joiner;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+import org.apache.isis.applib.AbstractViewModel;
+import org.apache.isis.applib.annotation.*;
+import org.apache.isis.applib.annotation.Render.Type;
+import org.apache.isis.applib.util.ObjectContracts;
+
+@Named("By Category")
+@Bookmarkable
+public class ToDoItemsByCategoryViewModel 
+        extends AbstractViewModel 
+        implements Comparable<ToDoItemsByCategoryViewModel> {
+
+    //region > viewModel implementation
+    // //////////////////////////////////////
+
+    @Override
+    public String viewModelMemento() {
+        return getCategory().name();
+    }
+
+    @Override
+    public void viewModelInit(String memento) {
+        setCategory(Category.valueOf(memento));
+    }
+
+    //endregion
+
+    //region > category (property)
+    // //////////////////////////////////////
+
+    private Category category;
+
+    /**
+     * Used as {@link ${symbol_pound}viewModelMemento() memento}
+     */
+    @Title
+    public Category getCategory() {
+        return category;
+    }
+
+    public void setCategory(final Category category) {
+        this.category = category;
+    }
+    //endregion
+
+    //region > notYetComplete (property), complete (property)
+    // //////////////////////////////////////
+
+    @MultiLine(numberOfLines=5)
+    public String getNotYetComplete() {
+        final List<ToDoItem> notYetComplete = getItemsNotYetComplete();
+        return Joiner.on(", ").join(
+            Iterables.transform(subcategories(), summarizeBySubcategory(notYetComplete)));
+    }
+
+    @MultiLine(numberOfLines=5)
+    public String getComplete() {
+        final List<ToDoItem> completeInCategory = getItemsComplete();
+        return Joiner.on(", ").join(
+            Iterables.transform(subcategories(), summarizeBySubcategory(completeInCategory)));
+    }
+
+    // //////////////////////////////////////
+
+    private Iterable<Subcategory> subcategories() {
+        return Iterables.filter(Arrays.asList(Subcategory.values()), Subcategory.thoseFor(getCategory()));
+    }
+
+    private Function<Subcategory, String> summarizeBySubcategory(final Iterable<ToDoItem> itemsInCategory) {
+        return new Function<Subcategory, String>() {
+            @Override
+            public String apply(final Subcategory subcategory) {
+                return subcategory + ": " + countIn(itemsInCategory, subcategory);
+            }
+        };
+    }
+
+    private static int countIn(final Iterable<ToDoItem> items, final Subcategory subcategory) {
+        return Iterables.size(Iterables.filter(items,
+                ToDoItem.Predicates.thoseSubcategorised(subcategory)));
+    }
+    //endregion
+
+    //region > getItemsNotYetComplete (collection), getItemsComplete (collection)
+    // //////////////////////////////////////
+
+    /**
+     * All those items {@link ToDoItems${symbol_pound}notYetComplete() not yet complete}, for this {@link ${symbol_pound}getCategory() category}.
+     */
+    @Render(Type.EAGERLY)
+    public List<ToDoItem> getItemsNotYetComplete() {
+        final List<ToDoItem> notYetComplete = toDoItems.notYetCompleteNoUi();
+        return Lists.newArrayList(Iterables.filter(notYetComplete, ToDoItem.Predicates.thoseCategorised(getCategory())));
+    }
+
+    /**
+     * All those items {@link ToDoItems${symbol_pound}complete() complete}, for this {@link ${symbol_pound}getCategory() category}.
+     */
+    @Render(Type.EAGERLY)
+    public List<ToDoItem> getItemsComplete() {
+        final List<ToDoItem> complete = toDoItems.completeNoUi();
+        return Lists.newArrayList(Iterables.filter(complete, ToDoItem.Predicates.thoseCategorised(getCategory())));
+    }
+
+    //endregion
+
+    //region > deleteCompleted (action)
+    // //////////////////////////////////////
+
+    @Named("Delete")
+    public ToDoItemsByCategoryViewModel deleteCompleted() {
+        for (ToDoItem item : getItemsComplete()) {
+            removeIfNotAlready(item);
+        }
+        // force reload of page
+        return this;
+    }
+
+    //endregion
+
+    //region > compareTo
+    // //////////////////////////////////////
+
+    @Override
+    public int compareTo(ToDoItemsByCategoryViewModel other) {
+        return ObjectContracts.compare(this, other, "category");
+    }
+    //endregion
+
+    //region > injected services
+    // //////////////////////////////////////
+
+    @javax.inject.Inject
+    private ToDoItems toDoItems;
+    //endregion
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/b6954e56/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemsByCategoryViewModel.layout.json
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemsByCategoryViewModel.layout.json b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemsByCategoryViewModel.layout.json
new file mode 100644
index 0000000..c87b554
--- /dev/null
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemsByCategoryViewModel.layout.json
@@ -0,0 +1,43 @@
+{
+  "columns": [
+    {
+      "span": 4,
+      "memberGroups": {
+        "General": {
+          "members": {
+            "category": {}
+          }
+        },
+        "Analysis": {
+          "members": {
+            "notYetComplete": {},
+            "complete": {}
+          }
+        }
+      }
+    },
+    {
+      "span": 0,
+      "memberGroups": {}
+    },
+    {
+      "span": 0,
+      "memberGroups": {}
+    },
+    {
+      "span": 8,
+      "collections": {
+        "itemsNotYetComplete": {},
+        "itemsComplete": {
+          "actions": {
+            "deleteCompleted": {}
+          }
+        }
+      }
+    }
+  ],
+  "actions": {
+    "downloadLayout": {},
+    "refreshLayout": {}
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/b6954e56/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemsByDateRangeViewModel.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemsByDateRangeViewModel.java b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemsByDateRangeViewModel.java
new file mode 100644
index 0000000..ecd2f45
--- /dev/null
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemsByDateRangeViewModel.java
@@ -0,0 +1,161 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT 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 app;
+
+import java.util.List;
+
+import app.ToDoItemAnalysis.DateRange;
+
+import com.google.common.base.Objects;
+import com.google.common.base.Predicate;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+
+import dom.todo.ToDoItem;
+import dom.todo.ToDoItems;
+
+import org.joda.time.DateTime;
+
+import org.apache.isis.applib.AbstractViewModel;
+import org.apache.isis.applib.annotation.Bookmarkable;
+import org.apache.isis.applib.annotation.Named;
+import org.apache.isis.applib.annotation.Render;
+import org.apache.isis.applib.annotation.Render.Type;
+import org.apache.isis.applib.annotation.Title;
+import org.apache.isis.applib.services.clock.ClockService;
+import org.apache.isis.applib.util.ObjectContracts;
+
+@Named("By Date Range")
+@Bookmarkable
+public class ToDoItemsByDateRangeViewModel 
+        extends AbstractViewModel 
+        implements Comparable<ToDoItemsByDateRangeViewModel> {
+
+    //region > viewModel implementation
+    // //////////////////////////////////////
+
+    @Override
+    public String viewModelMemento() {
+        return getDateRange().name();
+    }
+
+    @Override
+    public void viewModelInit(String memento) {
+        setDateRange(DateRange.valueOf(memento));
+    }
+
+    //endregion
+
+    //region > dateRange (property)
+    // //////////////////////////////////////
+    //
+    // //////////////////////////////////////
+
+    private DateRange dateRange;
+
+    /**
+     * Used as {@link ${symbol_pound}viewModelMemento() memento}
+     */
+    @Title
+    public DateRange getDateRange() {
+        return dateRange;
+    }
+
+    public void setDateRange(final DateRange dateRange) {
+        this.dateRange = dateRange;
+    }
+    //endregion
+
+    //region > count (derived property)
+    // //////////////////////////////////////
+
+    public int getCount() {
+        return getItemsNotYetComplete().size();
+    }
+
+    //endregion
+
+    //region > getItemsNotYetComplete (collection)
+    // //////////////////////////////////////
+
+    /**
+     * All those items {@link ToDoItems${symbol_pound}notYetComplete() not yet complete}, for this {@link ${symbol_pound}getCategory() category}.
+     */
+    @Render(Type.EAGERLY)
+    public List<ToDoItem> getItemsNotYetComplete() {
+        final List<ToDoItem> notYetComplete = toDoItems.notYetCompleteNoUi();
+        return Lists.newArrayList(Iterables.filter(notYetComplete, thoseInDateRange()));
+    }
+
+    private Predicate<ToDoItem> thoseInDateRange() {
+        return new Predicate<ToDoItem>() {
+            @Override
+            public boolean apply(ToDoItem t) {
+                return Objects.equal(dateRangeFor(t), getDateRange());
+            }
+        };
+    }
+    
+    private DateRange dateRangeFor(final ToDoItem t) {
+        if(t.getDueBy() == null) {
+            return DateRange.Unknown;
+        }
+        final DateTime dueBy = t.getDueBy().toDateTimeAtStartOfDay();
+        final DateTime today = clockService.now().toDateTimeAtStartOfDay();
+        
+        if(dueBy.isBefore(today)) {
+            return DateRange.OverDue;
+        }
+        if(dueBy.isBefore(today.plusDays(1))) {
+            return DateRange.Today;
+        }
+        if(dueBy.isBefore(today.plusDays(2))) {
+            return DateRange.Tomorrow;
+        }
+        if(dueBy.isBefore(today.plusDays(7))) {
+            return DateRange.ThisWeek;
+        }
+        return DateRange.Later;
+    }
+    //endregion
+
+    //region > compareTo
+    // //////////////////////////////////////
+
+    @Override
+    public int compareTo(ToDoItemsByDateRangeViewModel other) {
+        return ObjectContracts.compare(this, other, "dateRange");
+    }
+    //endregion
+
+    //region > injected services
+    // //////////////////////////////////////
+    
+    @javax.inject.Inject
+    private ToDoItems toDoItems;
+
+    @javax.inject.Inject
+    private ClockService clockService;
+
+    //endregion
+
+}