http://git-wip-us.apache.org/repos/asf/isis/blob/a4ec0b72/mothballed/example/application/todoapp/webapp/src/main/webapp/WEB-INF/viewer_restfulobjects.properties ---------------------------------------------------------------------- diff --git a/mothballed/example/application/todoapp/webapp/src/main/webapp/WEB-INF/viewer_restfulobjects.properties b/mothballed/example/application/todoapp/webapp/src/main/webapp/WEB-INF/viewer_restfulobjects.properties new file mode 100644 index 0000000..0a85fb6 --- /dev/null +++ b/mothballed/example/application/todoapp/webapp/src/main/webapp/WEB-INF/viewer_restfulobjects.properties @@ -0,0 +1,66 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +# +# configuration file for the Restful Objects viewer +# + +# the baseUrl for hrefs in the events generated by the RO EventSerializer +isis.viewer.restfulobjects.RestfulObjectsSpecEventSerializer.baseUrl=http://localhost:8080/restful/ + +# renders param details in the (incorrect) form that they were for GSOC2013 viewers +# isis.viewer.restfulobjects.gsoc2013.legacyParamDetails=true + +# whether to honor UI hints, in particular Render(EAGERLY). Defaults to false. +#isis.viewer.restfulobjects.honorUiHints=false + + + +############################################################################### +# Non-standard configuration settings. +# +# If enabled of the following are enabled then the viewer is deviating from the +# RO spec standard; compatibility may be compromised with RO clients. +############################################################################### + +# whether to show only object properties for object members +# (on the object representation only) +# Takes precedence over the other 'suppress' below. +#isis.viewer.restfulobjects.objectPropertyValuesOnly=true + +# whether to suppress "describedby" links. Defaults to false. +#isis.viewer.restfulobjects.suppressDescribedByLinks=true + +# whether to suppress "update" links. Defaults to false. +#isis.viewer.restfulobjects.suppressUpdateLink=true + +# whether to suppress "id" json-prop for object members. Defaults to false. +#isis.viewer.restfulobjects.suppressMemberId=true + +# whether to suppress "links" json-prop for object members +# (on the object representation only). Defaults to false. +#isis.viewer.restfulobjects.suppressMemberLinks=true + +# whether to suppress "extensions" json-prop for object members +# (on the object representation only). Defaults to false. +#isis.viewer.restfulobjects.suppressMemberExtensions=true + +# whether to suppress "disabledReason" json-prop for object members +# (on the object representation only). Defaults to false. +#isis.viewer.restfulobjects.suppressMemberDisabledReason=true + +###############################################################################
http://git-wip-us.apache.org/repos/asf/isis/blob/a4ec0b72/mothballed/example/application/todoapp/webapp/src/main/webapp/WEB-INF/viewer_wicket.properties ---------------------------------------------------------------------- diff --git a/mothballed/example/application/todoapp/webapp/src/main/webapp/WEB-INF/viewer_wicket.properties b/mothballed/example/application/todoapp/webapp/src/main/webapp/WEB-INF/viewer_wicket.properties new file mode 100644 index 0000000..41bd21b --- /dev/null +++ b/mothballed/example/application/todoapp/webapp/src/main/webapp/WEB-INF/viewer_wicket.properties @@ -0,0 +1,87 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +# +# configuration file for the Wicket viewer +# + +# +# The maximum length of titles to display in standalone or parented tables. +# Titles longer than this length will be truncated with trailing ellipses (...) +# +# For example, if set to 12, the title +# "Buy milk on 15-Feb-13" will be truncated to "Buy milk ..." +# +# If set to 0, then only the icon will be shown. +# +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-YYYY + +#isis.viewer.wicket.datePattern=dd/MM/yy +#isis.viewer.wicket.dateTimePattern=dd/MM/yy HH:mm +#isis.viewer.wicket.datePickerPattern=DD/MM/YY + + + +# +# whether to strip wicket tags from markup (default is true, as they may break some CSS rules) +# +#isis.viewer.wicket.stripWicketTags=false + + +# +# whether to suppress the 'rememberMe' checkbox on the login page (default is false) +# +#isis.viewer.wicket.suppressRememberMe=false + +# +# if user attempts to access a protected URL before signing in, then as a convenience the viewer will continue +# through to that destination after successful login. If you consider this to be a security risk then this flag +# disables that behaviour (default is false). +# +#isis.viewer.wicket.clearOriginalDestination=true + + +# +# whether to show action dialogs on their own page rather than as a modal dialog (default is false) +# +#isis.viewer.wicket.disableModalDialogs=false + + +# +# the maximum number of pages to list in bookmark (default is 15) +# +#isis.viewer.wicket.bookmarkedPages.maxSize=15 + + +# +# whether to show the bootstrap theme chooser (defaults false) +# +#isis.viewer.wicket.themes.showChooser=false +isis.viewer.wicket.themes.showChooser=true + +# +# comma-separated list of themes to choose from (default is to show all themes from bootswatch.com). +# +#isis.viewer.wicket.themes.enabled=bootstrap-theme,Cosmo,Flatly,Darkly,Sandstone,United +isis.viewer.wicket.themes.enabled=bootstrap-theme,Cosmo,Flatly,Darkly,Sandstone,United + http://git-wip-us.apache.org/repos/asf/isis/blob/a4ec0b72/mothballed/example/application/todoapp/webapp/src/main/webapp/WEB-INF/web.xml ---------------------------------------------------------------------- diff --git a/mothballed/example/application/todoapp/webapp/src/main/webapp/WEB-INF/web.xml b/mothballed/example/application/todoapp/webapp/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..5cc79b5 --- /dev/null +++ b/mothballed/example/application/todoapp/webapp/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,308 @@ +<?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>Todo 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#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> + --> + + +</web-app> http://git-wip-us.apache.org/repos/asf/isis/blob/a4ec0b72/mothballed/example/application/todoapp/webapp/src/main/webapp/about/images/isis-logo.png ---------------------------------------------------------------------- diff --git a/mothballed/example/application/todoapp/webapp/src/main/webapp/about/images/isis-logo.png b/mothballed/example/application/todoapp/webapp/src/main/webapp/about/images/isis-logo.png new file mode 100644 index 0000000..5284fe7 Binary files /dev/null and b/mothballed/example/application/todoapp/webapp/src/main/webapp/about/images/isis-logo.png differ http://git-wip-us.apache.org/repos/asf/isis/blob/a4ec0b72/mothballed/example/application/todoapp/webapp/src/main/webapp/about/index.html ---------------------------------------------------------------------- diff --git a/mothballed/example/application/todoapp/webapp/src/main/webapp/about/index.html b/mothballed/example/application/todoapp/webapp/src/main/webapp/about/index.html new file mode 100644 index 0000000..5762e8f --- /dev/null +++ b/mothballed/example/application/todoapp/webapp/src/main/webapp/about/index.html @@ -0,0 +1,175 @@ +<!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™ TodoApp</title> + + <style type="text/css"> +body { + background-color: #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; +} +#wrapper { + background-color: #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" target="_blank">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/intro/getting-started/todo%61pp-archetype.html" target="_blank">TodoApp</a> archetype, + which configures Isis to run a (quite feature rich) "todo" app. + + <p> + The app itself consists of a single domain class, <tt>ToDoItem</tt>, along with a number of supporting + services. + </p> + + <p>To access the app:</p> + <ul> + <li> + <p> + <b><a href="wicket/">wicket/</a></b> + </p> + <p> + provides accesses to a generic UI for end-users, + Isis' <a href="http://isis.apache.org/components/viewers/wicket/about.html" target="_blank">Wicket Viewer</a>. + As its name suggests, this viewer is built on top of <a href="http://wicket.apache.org" target="_blank">Apache Wicket</a>™. + </p> + </li> + <li> + <p> + <b> + <a href="restful/">restful/</a> + </b> + </p> + <p> + provides access to a RESTful API conformant with the + <a href="http://restfulobjects.org">Restful Objects</a> spec</td>. This is part of Isis Core. The + implementation technology is JBoss RestEasy. + </p> + </li> + </ul> + + <p> + The default user/password is <b><i>sven/pass</i></b> (as configured in the + <a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/webapp/src/main/webapp/WEB-INF/shiro.ini" target="_blank">shiro.ini</a> file). + </p> + + <p> + To build your own app, while you could start with this todo app and remove/rename as required, you are + probably better off using the extremely minimal + <a href="http://isis.apache.org/intro/getting-started/simpleapp-archetype.html" target="_blank">SimpleApp</a> archetype. + </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/todo%61pp/dom/src/main/java/dom/todo/ToDoItem.java" target="_blank"><tt>ToDoItem</tt></a> domain entity + </li> + <li><a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/dom/src/main/java/dom/todo/ToDoItems.java" target="_blank"><tt>ToDoItems</tt></a> domain service (repository/factory) + </li> + <li><a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/dom/src/main/java/app/ToDoItemAnalysis.java" target="_blank"><tt>ToDoItemAnalysis</tt></a> application service analysing todo items + </li> + <li><a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/dom/src/main/java/app/ToDoAppDashboard.java" target="_blank"><tt>ToDoAppDashboard</tt></a> dashboard application service + </li> + </ul> + </li> + <li>Fixture scripts (in <tt>fixture</tt> module) + <ul> + <li><a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/fixture/src/main/java/fixture/todo/ToDoItemsFixturesService.java" target="_blank"><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/todo%61pp/webapp/src/main/webapp/WEB-INF/web.xml" target="_blank">WEB-INF/web.xml</a></tt> (in <tt>webapp</tt> module) + <ul> + <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/webapp/src/main/webapp/WEB-INF/web.xml#L98" target="_blank">ResourceCachingFilter</a></tt> and <tt><a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/webapp/src/main/webapp/WEB-INF/web.xml#L134" target="_blank">ResourceServlet</a></tt> - filter and servlet for serving up static resources. + </li> + <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/webapp/src/main/webapp/WEB-INF/web.xml#L174" target="_blank">WicketFilter</a></tt> - filter for the wicket application, mapped to <tt>/wicket/*</tt> + </li> + <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/webapp/src/main/webapp/WEB-INF/web.xml#L223" target="_blank">ResteasyBootstrap</a></tt>, + <tt><a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/webapp/src/main/webapp/WEB-INF/web.xml#L240" target="_blank">IsisSessionFilterForRestfulObjects</a></tt>, + <tt><a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/webapp/src/main/webapp/WEB-INF/web.xml#L271" target="_blank">RestfulObjectsRestEasyDispatcher</a></tt> - listeners, filters and servlets to bootstrap and map restful objects viewer to <tt>/restful/*</tt>. + </li> + <li>commented out <tt><a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/webapp/src/main/webapp/WEB-INF/web.xml#L208" target="_blank">IsisWebAppBootstrapper</a></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/todo%61pp/webapp/src/main/webapp/WEB-INF/isis.properties" target="_blank">WEB-INF/isis.properties</a></tt> (in <tt>webapp</tt> module) + <ul> + <li><tt>isis.services</tt> - explicitly loaded framework-provide domain services. Other services (including <tt>ToDoItems</tt> and <tt>ToDoItemsFixtureService</tt> described above), + are loaded automatically from the classpath. + </li> + <li><tt>isis.persistor</tt> - specifies to use Isis' integration with <a href="http://datanucleus.org">DataNucleus</a> for (JDO-based) persistence. + </li> + <li><tt>isis.authentication</tt> and <tt>isis.authorization</tt> - specifies to use Isis' integration with <a href="http://shiro.apache.org">Apache Shiro</a> for security. + </li> + </ul> + </li> + <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/webapp/src/main/webapp/WEB-INF/persistor_datanucleus.properties" target="_blank">WEB-INF/persistor_datanucleus.properties</a></tt> (in <tt>webapp</tt> module) + <ul> + <li>configuration for the DataNucleus (JDO) object store + </li> + </ul> + </li> + <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/webapp/src/main/webapp/WEB-INF/persistor.properties" target="_blank">WEB-INF/persistor.properties</a></tt> (in <tt>webapp</tt> module) + <ul> + <li>JDBC URL for DataNucleus (JDO) object store + </li> + </ul> + </li> + <li><tt><a href="https://github.com/apache/isis/blob/master/example/application/todo%61pp/webapp/src/main/webapp/WEB-INF/shiro.ini" target="_blank">WEB-INF/shiro.ini</a></tt> (in <tt>webapp</tt> module) + <ul> + <li>configuration for Shiro security + </li> + </ul> + </li> + </ul> + </div> + </body> +</html> http://git-wip-us.apache.org/repos/asf/isis/blob/a4ec0b72/mothballed/example/application/todoapp/webapp/src/main/webapp/css/application.css ---------------------------------------------------------------------- diff --git a/mothballed/example/application/todoapp/webapp/src/main/webapp/css/application.css b/mothballed/example/application/todoapp/webapp/src/main/webapp/css/application.css new file mode 100644 index 0000000..7cc31cf --- /dev/null +++ b/mothballed/example/application/todoapp/webapp/src/main/webapp/css/application.css @@ -0,0 +1,35 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +.navbar-brand img { + margin-top: -7px; + margin-left: 5px; +} + +.x-key label.scalarName { + color: red; +} + +tr.todo { +} + +tr.done { + text-decoration: line-through; + color: #d3d3d3; +} http://git-wip-us.apache.org/repos/asf/isis/blob/a4ec0b72/mothballed/example/application/todoapp/webapp/src/main/webapp/images/todoapp-logo-header.pdn ---------------------------------------------------------------------- diff --git a/mothballed/example/application/todoapp/webapp/src/main/webapp/images/todoapp-logo-header.pdn b/mothballed/example/application/todoapp/webapp/src/main/webapp/images/todoapp-logo-header.pdn new file mode 100644 index 0000000..016c9b8 Binary files /dev/null and b/mothballed/example/application/todoapp/webapp/src/main/webapp/images/todoapp-logo-header.pdn differ http://git-wip-us.apache.org/repos/asf/isis/blob/a4ec0b72/mothballed/example/application/todoapp/webapp/src/main/webapp/images/todoapp-logo-header.png ---------------------------------------------------------------------- diff --git a/mothballed/example/application/todoapp/webapp/src/main/webapp/images/todoapp-logo-header.png b/mothballed/example/application/todoapp/webapp/src/main/webapp/images/todoapp-logo-header.png new file mode 100644 index 0000000..2c417fb Binary files /dev/null and b/mothballed/example/application/todoapp/webapp/src/main/webapp/images/todoapp-logo-header.png differ http://git-wip-us.apache.org/repos/asf/isis/blob/a4ec0b72/mothballed/example/application/todoapp/webapp/src/main/webapp/images/todoapp-logo-signin.pdn ---------------------------------------------------------------------- diff --git a/mothballed/example/application/todoapp/webapp/src/main/webapp/images/todoapp-logo-signin.pdn b/mothballed/example/application/todoapp/webapp/src/main/webapp/images/todoapp-logo-signin.pdn new file mode 100644 index 0000000..7a164e1 Binary files /dev/null and b/mothballed/example/application/todoapp/webapp/src/main/webapp/images/todoapp-logo-signin.pdn differ http://git-wip-us.apache.org/repos/asf/isis/blob/a4ec0b72/mothballed/example/application/todoapp/webapp/src/main/webapp/images/todoapp-logo-signin.png ---------------------------------------------------------------------- diff --git a/mothballed/example/application/todoapp/webapp/src/main/webapp/images/todoapp-logo-signin.png b/mothballed/example/application/todoapp/webapp/src/main/webapp/images/todoapp-logo-signin.png new file mode 100644 index 0000000..ee2feb4 Binary files /dev/null and b/mothballed/example/application/todoapp/webapp/src/main/webapp/images/todoapp-logo-signin.png differ http://git-wip-us.apache.org/repos/asf/isis/blob/a4ec0b72/mothballed/example/application/todoapp/webapp/src/main/webapp/images/todoapp-logo.pdn ---------------------------------------------------------------------- diff --git a/mothballed/example/application/todoapp/webapp/src/main/webapp/images/todoapp-logo.pdn b/mothballed/example/application/todoapp/webapp/src/main/webapp/images/todoapp-logo.pdn new file mode 100644 index 0000000..4983ca9 Binary files /dev/null and b/mothballed/example/application/todoapp/webapp/src/main/webapp/images/todoapp-logo.pdn differ http://git-wip-us.apache.org/repos/asf/isis/blob/a4ec0b72/mothballed/example/application/todoapp/webapp/src/main/webapp/scripts/application.js ---------------------------------------------------------------------- diff --git a/mothballed/example/application/todoapp/webapp/src/main/webapp/scripts/application.js b/mothballed/example/application/todoapp/webapp/src/main/webapp/scripts/application.js new file mode 100644 index 0000000..d8cf6fe --- /dev/null +++ b/mothballed/example/application/todoapp/webapp/src/main/webapp/scripts/application.js @@ -0,0 +1,3 @@ +$(document).ready(function() { + /// here... +}); \ No newline at end of file http://git-wip-us.apache.org/repos/asf/isis/blob/a4ec0b72/mothballed/example/archetype/todoapp/pom.xml ---------------------------------------------------------------------- diff --git a/mothballed/example/archetype/todoapp/pom.xml b/mothballed/example/archetype/todoapp/pom.xml new file mode 100644 index 0000000..dfc82e5 --- /dev/null +++ b/mothballed/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" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <modelVersion>4.0.0</modelVersion> + <groupId>org.apache.isis.archetype</groupId> + <artifactId>todoapp-archetype</artifactId> + <version>1.8.0-SNAPSHOT</version> + <packaging>maven-archetype</packaging> + <name>todoapp-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.8.0-SNAPSHOT</version> + <relativePath>../../../core/pom.xml</relativePath> + </parent> +</project> http://git-wip-us.apache.org/repos/asf/isis/blob/a4ec0b72/mothballed/example/archetype/todoapp/src/main/appended-resources/supplemental-models.xml ---------------------------------------------------------------------- diff --git a/mothballed/example/archetype/todoapp/src/main/appended-resources/supplemental-models.xml b/mothballed/example/archetype/todoapp/src/main/appended-resources/supplemental-models.xml new file mode 100644 index 0000000..01c58d8 --- /dev/null +++ b/mothballed/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/a4ec0b72/mothballed/example/archetype/todoapp/src/main/resources/META-INF/maven/archetype-metadata.xml ---------------------------------------------------------------------- diff --git a/mothballed/example/archetype/todoapp/src/main/resources/META-INF/maven/archetype-metadata.xml b/mothballed/example/archetype/todoapp/src/main/resources/META-INF/maven/archetype-metadata.xml new file mode 100644 index 0000000..fbe878e --- /dev/null +++ b/mothballed/example/archetype/todoapp/src/main/resources/META-INF/maven/archetype-metadata.xml @@ -0,0 +1,167 @@ +<?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="todoapp" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <fileSets> + <fileSet encoding="UTF-8"> + <directory/> + <includes> + <include>.gitattributes</include> + <include>.gitignore</include> + </includes> + </fileSet> + </fileSets> + <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>**/*.png</include> + <include>**/*.json</include> + </includes> + </fileSet> + <fileSet filtered="true" encoding="UTF-8"> + <directory>src/main/resources</directory> + <includes> + <include>**/*.xml</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> + </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>**/*.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>**/*.png</include> + <include>**/*.js</include> + <include>**/*.ini</include> + <include>**/*.pdn</include> + <include>**/*.css</include> + </includes> + </fileSet> + <fileSet encoding="UTF-8"> + <directory>src/main/resources</directory> + <includes> + <include>**/*.ini</include> + </includes> + </fileSet> + <fileSet filtered="true" encoding="UTF-8"> + <directory>ide/intellij</directory> + <includes> + <include>**/*.xml</include> + <include>**/*.txt</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/a4ec0b72/mothballed/example/archetype/todoapp/src/main/resources/archetype-resources/.gitattributes ---------------------------------------------------------------------- diff --git a/mothballed/example/archetype/todoapp/src/main/resources/archetype-resources/.gitattributes b/mothballed/example/archetype/todoapp/src/main/resources/archetype-resources/.gitattributes new file mode 100644 index 0000000..b1eafb6 --- /dev/null +++ b/mothballed/example/archetype/todoapp/src/main/resources/archetype-resources/.gitattributes @@ -0,0 +1,51 @@ +# +# +# text files are normalized (convert crlf => lf) +# binary files are not normalized (binary is a macro for -text -diff) +# +# + + +# Unless otherwise stated, assume text + +* text=auto + + +*.java text diff=java +*.html text diff=html +*.xhtml text diff=html +*.xml text +*.txt text + + +*.jar binary +*.so binary +*.dll binary + +# images +*.jpg binary +*.jpeg binary +*.png binary +*.pdn binary +*.pdn binary + + +*.cs text diff=csharp + +*.sln merge=union +*.csproj merge=union +*.vbproj merge=union +*.fsproj merge=union +*.dbproj merge=union + +*.doc diff=astextplain +*.DOC diff=astextplain +*.docx diff=astextplain +*.DOCX diff=astextplain +*.dot diff=astextplain +*.DOT diff=astextplain +*.pdf diff=astextplain +*.PDF diff=astextplain +*.rtf diff=astextplain +*.RTF diff=astextplain + http://git-wip-us.apache.org/repos/asf/isis/blob/a4ec0b72/mothballed/example/archetype/todoapp/src/main/resources/archetype-resources/.gitignore ---------------------------------------------------------------------- diff --git a/mothballed/example/archetype/todoapp/src/main/resources/archetype-resources/.gitignore b/mothballed/example/archetype/todoapp/src/main/resources/archetype-resources/.gitignore new file mode 100644 index 0000000..ad3f5e2 --- /dev/null +++ b/mothballed/example/archetype/todoapp/src/main/resources/archetype-resources/.gitignore @@ -0,0 +1,40 @@ +*~ +*.swp +*.class +bin/ +target/ +target-ide/ +logs/ +.settings/ +.project +.classpath +.idea +*.iml + +JArchitectOut/ +*.jdproj + +neo4j_DB/ + +# log files +datanucleus.log +isis.log +hs_err_pid*.log + +# Package Files # +*.jar +*.war +*.ear + +dependency-reduced-pom.xml +pom.xml.tag +pom.xml.next +pom.xml.releaseBackup +pom.xml.versionsBackup + +.clover/ +*.jdproj +JArchitectOut/ + + +rebel.xml http://git-wip-us.apache.org/repos/asf/isis/blob/a4ec0b72/mothballed/example/archetype/todoapp/src/main/resources/archetype-resources/dom/log4j.properties ---------------------------------------------------------------------- diff --git a/mothballed/example/archetype/todoapp/src/main/resources/archetype-resources/dom/log4j.properties b/mothballed/example/archetype/todoapp/src/main/resources/archetype-resources/dom/log4j.properties new file mode 100644 index 0000000..2040d89 --- /dev/null +++ b/mothballed/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/a4ec0b72/mothballed/example/archetype/todoapp/src/main/resources/archetype-resources/dom/pom.xml ---------------------------------------------------------------------- diff --git a/mothballed/example/archetype/todoapp/src/main/resources/archetype-resources/dom/pom.xml b/mothballed/example/archetype/todoapp/src/main/resources/archetype-resources/dom/pom.xml new file mode 100644 index 0000000..38e5063 --- /dev/null +++ b/mothballed/example/archetype/todoapp/src/main/resources/archetype-resources/dom/pom.xml @@ -0,0 +1,162 @@ +<?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>ToDo App 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.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> + + <profiles> + <profile> + <id>isis-validate</id> + <activation> + </activation> + <build> + <plugins> + <plugin> + <groupId>org.apache.isis.tool</groupId> + <artifactId>isis-maven-plugin</artifactId> + <version>1.8.0-SNAPSHOT</version> + <configuration> + <isisConfigDir>../webapp/src/main/webapp/WEB-INF</isisConfigDir> + </configuration> + <dependencies> + <dependency> + <groupId>org.apache.isis.example.application</groupId> + <artifactId>todoapp-dom</artifactId> + <version>1.8.0-SNAPSHOT</version> + </dependency> + <!-- + ... workaround to avoid conflict with plexus-default + (not sure why exclusions in the isis-maven-plugin aren't sufficient, though ... + --> + <dependency> + <groupId>com.google.guava</groupId> + <artifactId>guava</artifactId> + <version>16.0.1</version> + </dependency> + </dependencies> + <executions> + <execution> + <phase>test</phase> + <goals> + <goal>validate</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> + +</project> http://git-wip-us.apache.org/repos/asf/isis/blob/a4ec0b72/mothballed/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/META-INF/persistence.xml ---------------------------------------------------------------------- diff --git a/mothballed/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/META-INF/persistence.xml b/mothballed/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/mothballed/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/a4ec0b72/mothballed/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoAppDashboard.java ---------------------------------------------------------------------- diff --git a/mothballed/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoAppDashboard.java b/mothballed/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoAppDashboard.java new file mode 100644 index 0000000..2686139 --- /dev/null +++ b/mothballed/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoAppDashboard.java @@ -0,0 +1,86 @@ +#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.Collection; +import org.apache.isis.applib.annotation.CollectionLayout; +import org.apache.isis.applib.annotation.Editing; +import org.apache.isis.applib.annotation.RenderType; + +public class ToDoAppDashboard extends AbstractViewModel { + + //region > identification in the UI + public String title() { + return "Dashboard"; + } + //endregion + + //region > ViewModel contract + private String memento; + + @Override + public String viewModelMemento() { + return memento; + } + + @Override + public void viewModelInit(final String memento) { + this.memento = memento; + } + + //endregion + + //region > getAnalysisByCategory (collection) + @CollectionLayout( + named="By Category", + render = RenderType.EAGERLY + ) + @Collection( + editing = Editing.DISABLED + ) + public List<ToDoItemsByCategoryViewModel> getAnalysisByCategory() { + return toDoItemAnalysis.toDoItemsByCategory(); + } + //endregion + + //region > getAnalysisByDateRange (collection) + @CollectionLayout( + named="By Date Range", + render = RenderType.EAGERLY + ) + @Collection( + editing = Editing.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/a4ec0b72/mothballed/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoAppDashboard.layout.json ---------------------------------------------------------------------- diff --git a/mothballed/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoAppDashboard.layout.json b/mothballed/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/mothballed/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/a4ec0b72/mothballed/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoAppDashboard.png ---------------------------------------------------------------------- diff --git a/mothballed/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoAppDashboard.png b/mothballed/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoAppDashboard.png new file mode 100644 index 0000000..fe6e6a1 Binary files /dev/null and b/mothballed/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoAppDashboard.png differ http://git-wip-us.apache.org/repos/asf/isis/blob/a4ec0b72/mothballed/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoAppDashboardService.java ---------------------------------------------------------------------- diff --git a/mothballed/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoAppDashboardService.java b/mothballed/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoAppDashboardService.java new file mode 100644 index 0000000..190c7ba --- /dev/null +++ b/mothballed/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoAppDashboardService.java @@ -0,0 +1,35 @@ +#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.annotation.DomainService; +import org.apache.isis.applib.annotation.NatureOfService; +import org.apache.isis.applib.services.homepage.AbstractHomePageDashboardService; + +@DomainService(nature = NatureOfService.DOMAIN) +public class ToDoAppDashboardService extends AbstractHomePageDashboardService<ToDoAppDashboard> { + + public ToDoAppDashboardService() { + super(ToDoAppDashboard.class); + } + +} http://git-wip-us.apache.org/repos/asf/isis/blob/a4ec0b72/mothballed/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemAnalysis.java ---------------------------------------------------------------------- diff --git a/mothballed/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemAnalysis.java b/mothballed/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemAnalysis.java new file mode 100644 index 0000000..f5ff7f9 --- /dev/null +++ b/mothballed/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.Action; +import org.apache.isis.applib.annotation.ActionLayout; +import org.apache.isis.applib.annotation.BookmarkPolicy; +import org.apache.isis.applib.annotation.DomainService; +import org.apache.isis.applib.annotation.DomainServiceLayout; +import org.apache.isis.applib.annotation.MemberOrder; +import org.apache.isis.applib.annotation.Programmatic; +import org.apache.isis.applib.annotation.SemanticsOf; + +@DomainServiceLayout( + named="Analysis", + menuOrder = "20") +@DomainService +public class ToDoItemAnalysis { + + + //region > identification in the UI + public String getId() { + return "analysis"; + } + + public String iconName() { + return "ToDoItem"; + } + //endregion + + + //region > byCategory (action) + @ActionLayout( + cssClassFa="fa fa-pie-chart", + named="By Category", + bookmarking = BookmarkPolicy.AS_ROOT + ) + @Action(semantics = SemanticsOf.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) { + return new ToDoItemsByCategoryViewModel(category); + } + }; + } + //endregion + + //region > byDateRange (action) + + public enum DateRange { + OverDue, + Today, + Tomorrow, + ThisWeek, + Later, + Unknown, + } + + @ActionLayout( + cssClassFa="fa fa-calendar", + named="By Date Range", + bookmarking = BookmarkPolicy.AS_ROOT + ) + @Action(semantics = SemanticsOf.SAFE) + @MemberOrder(sequence = "1") + public List<ToDoItemsByDateRangeViewModel> toDoItemsByDateRange() { + final List<DateRange> dateRanges = Arrays.asList(DateRange.values()); + return Lists.newArrayList(Iterables.transform(dateRanges, byDateRange())); + } + + private static Function<DateRange, ToDoItemsByDateRangeViewModel> byDateRange() { + return new Function<DateRange, ToDoItemsByDateRangeViewModel>(){ + @Override + public ToDoItemsByDateRangeViewModel apply(final DateRange dateRange) { + return new ToDoItemsByDateRangeViewModel(dateRange); + } + }; + } + //endregion + + //region > forCategory (programmatic) + @Programmatic + public ToDoItemsByCategoryViewModel toDoItemsForCategory(final 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/a4ec0b72/mothballed/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemAnalysisContributions.java ---------------------------------------------------------------------- diff --git a/mothballed/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemAnalysisContributions.java b/mothballed/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemAnalysisContributions.java new file mode 100644 index 0000000..f40e14d --- /dev/null +++ b/mothballed/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemAnalysisContributions.java @@ -0,0 +1,53 @@ +#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.Action; +import org.apache.isis.applib.annotation.ActionLayout; +import org.apache.isis.applib.annotation.Contributed; +import org.apache.isis.applib.annotation.DomainService; +import org.apache.isis.applib.annotation.NatureOfService; +import org.apache.isis.applib.annotation.SemanticsOf; + +@DomainService(nature = NatureOfService.VIEW_CONTRIBUTIONS_ONLY) +public class ToDoItemAnalysisContributions { + + + //region > analyseCategory (action) + @ActionLayout(contributed = Contributed.AS_ACTION) + @Action( + semantics = SemanticsOf.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/a4ec0b72/mothballed/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemsByCategoryViewModel.java ---------------------------------------------------------------------- diff --git a/mothballed/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemsByCategoryViewModel.java b/mothballed/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemsByCategoryViewModel.java new file mode 100644 index 0000000..9226e54 --- /dev/null +++ b/mothballed/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemsByCategoryViewModel.java @@ -0,0 +1,171 @@ +#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.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.DomainObjectContainer; +import org.apache.isis.applib.annotation.ActionLayout; +import org.apache.isis.applib.annotation.BookmarkPolicy; +import org.apache.isis.applib.annotation.CollectionLayout; +import org.apache.isis.applib.annotation.DomainObject; +import org.apache.isis.applib.annotation.DomainObjectLayout; +import org.apache.isis.applib.annotation.Nature; +import org.apache.isis.applib.annotation.PropertyLayout; +import org.apache.isis.applib.annotation.RenderType; +import org.apache.isis.applib.annotation.Title; +import org.apache.isis.applib.util.ObjectContracts; + +@DomainObjectLayout( + named="By Category", + bookmarking = BookmarkPolicy.AS_ROOT +) +@DomainObject( + nature = Nature.VIEW_MODEL +) +public class ToDoItemsByCategoryViewModel + implements Comparable<ToDoItemsByCategoryViewModel> { + + //region > constructors + public ToDoItemsByCategoryViewModel() { + } + public ToDoItemsByCategoryViewModel(final Category category) { + setCategory(category); + } + //endregion + + + //region > category (property) + private Category category; + + @Title + public Category getCategory() { + return category; + } + + public void setCategory(final Category category) { + this.category = category; + } + //endregion + + //region > notYetComplete (property), complete (property) + @PropertyLayout( + multiLine=5 + ) + public String getNotYetComplete() { + final List<ToDoItem> notYetComplete = getItemsNotYetComplete(); + return Joiner.on(", ").join( + Iterables.transform(subcategories(), summarizeBySubcategory(notYetComplete))); + } + + @PropertyLayout( + multiLine=5 + ) + public String getComplete() { + final List<ToDoItem> completeInCategory = getItemsComplete(); + return Joiner.on(", ").join( + Iterables.transform(subcategories(), summarizeBySubcategory(completeInCategory))); + } + + // ////////////////////////////////////// + + private Iterable<ToDoItem.Subcategory> subcategories() { + return Iterables.filter(Arrays.asList(ToDoItem.Subcategory.values()), ToDoItem.Subcategory.thoseFor(getCategory())); + } + + private Function<ToDoItem.Subcategory, String> summarizeBySubcategory(final Iterable<ToDoItem> itemsInCategory) { + return new Function<ToDoItem.Subcategory, String>() { + @Override + public String apply(final ToDoItem.Subcategory subcategory) { + return subcategory + ": " + countIn(itemsInCategory, subcategory); + } + }; + } + + private static int countIn(final Iterable<ToDoItem> items, final ToDoItem.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}. + */ + @CollectionLayout( + render = RenderType.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}. + */ + @CollectionLayout( + render = RenderType.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) + @ActionLayout( + named="Delete" + ) + public ToDoItemsByCategoryViewModel deleteCompleted() { + for (final ToDoItem item : getItemsComplete()) { + container.removeIfNotAlready(item); + } + // force reload of page + return this; + } + + //endregion + + //region > compareTo + @Override + public int compareTo(final ToDoItemsByCategoryViewModel other) { + return ObjectContracts.compare(this, other, "category"); + } + //endregion + + //region > injected services + @javax.inject.Inject + private DomainObjectContainer container; + @javax.inject.Inject + private ToDoItems toDoItems; + //endregion + +} http://git-wip-us.apache.org/repos/asf/isis/blob/a4ec0b72/mothballed/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemsByCategoryViewModel.layout.json ---------------------------------------------------------------------- diff --git a/mothballed/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemsByCategoryViewModel.layout.json b/mothballed/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/mothballed/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/a4ec0b72/mothballed/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemsByCategoryViewModel.png ---------------------------------------------------------------------- diff --git a/mothballed/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemsByCategoryViewModel.png b/mothballed/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemsByCategoryViewModel.png new file mode 100644 index 0000000..c22ab2b Binary files /dev/null and b/mothballed/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/app/ToDoItemsByCategoryViewModel.png differ
