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™ 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>™ 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
- "todo" 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>™</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 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 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>™</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 "todo" 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
+
+}