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/12/17 21:56:59 UTC

[1/4] isis git commit: ISIS-284: moved isis-maven-plugin into core; deleted unused code; todoapp example now references the plugin in its webapp project.

Repository: isis
Updated Branches:
  refs/heads/master d17f5a9a3 -> f76185ded


ISIS-284: moved isis-maven-plugin into core; deleted unused code; todoapp example now references the plugin in its webapp project.


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

Branch: refs/heads/master
Commit: e08e261a099546e22f3991474ae6f7092e44dbf0
Parents: d17f5a9
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Wed Dec 17 13:54:53 2014 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Wed Dec 17 13:54:53 2014 +0000

----------------------------------------------------------------------
 core/applib/pom.xml                             |  88 +++---
 core/maven-plugin/pom.xml                       | 310 +++++++++++++++++++
 .../appended-resources/supplemental-models.xml  | 106 +++++++
 .../isis/tool/mavenplugin/ValidateMojo.java     | 171 ++++++++++
 .../tool/mavenplugin/util/IsisMetaModels.java   |  36 +++
 .../isis/tool/mavenplugin/util/Log4j.java       |  48 +++
 .../tool/mavenplugin/util/MavenProjects.java    |  43 +++
 .../isis/tool/mavenplugin/util/Xpp3Doms.java    |  36 +++
 core/pom.xml                                    |  78 +++--
 example/application/todoapp/webapp/pom.xml      |  32 ++
 pom.xml                                         |   2 -
 tool/maven-plugin/pom.xml                       | 302 ------------------
 .../appended-resources/supplemental-models.xml  | 106 -------
 .../isis/tool/mavenplugin/ValidateMojo.java     | 172 ----------
 .../isis/tool/mavenplugin/util/ClassRealms.java |  23 --
 .../isis/tool/mavenplugin/util/ClassWorlds.java |  22 --
 .../tool/mavenplugin/util/IsisMetaModels.java   |  18 --
 .../isis/tool/mavenplugin/util/Log4j.java       |  30 --
 .../tool/mavenplugin/util/MavenProjects.java    |  25 --
 .../isis/tool/mavenplugin/util/Xpp3Doms.java    |  18 --
 20 files changed, 874 insertions(+), 792 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/e08e261a/core/applib/pom.xml
----------------------------------------------------------------------
diff --git a/core/applib/pom.xml b/core/applib/pom.xml
index f3f85d2..a852e60 100644
--- a/core/applib/pom.xml
+++ b/core/applib/pom.xml
@@ -17,55 +17,56 @@
   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>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
 
-	<parent>
-		<groupId>org.apache.isis.core</groupId>
-		<artifactId>isis</artifactId>
+    <parent>
+        <groupId>org.apache.isis.core</groupId>
+        <artifactId>isis</artifactId>
         <version>1.8.0-SNAPSHOT</version>
-	</parent>
+    </parent>
 
-	<artifactId>isis-core-applib</artifactId>
+    <artifactId>isis-core-applib</artifactId>
 
-	<name>Isis Core AppLib</name>
-	<description>
-		Isis application library, defining annotations and utilities for the
-		default (Java) programming model.
-	</description>
+    <name>Isis Core AppLib</name>
+    <description>
+        Isis application library, defining annotations and utilities for the
+        default (Java) programming model.
+    </description>
 
-	<properties>
+    <properties>
         <siteBaseDir>..</siteBaseDir>
-		<relativeUrl>applib/</relativeUrl>
-	</properties>
+        <relativeUrl>applib/</relativeUrl>
+    </properties>
 
     <!-- used in Site generation for relative references. -->
     <url>http://isis.apache.org/${relativeUrl}</url>
 
-	<reporting>
-		<excludeDefaults>true</excludeDefaults>
-		<plugins>
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-project-info-reports-plugin</artifactId>
-				<inherited>false</inherited>
+    <reporting>
+        <excludeDefaults>true</excludeDefaults>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-project-info-reports-plugin</artifactId>
+                <inherited>false</inherited>
                 <configuration>
-                	<dependencyLocationsEnabled>false</dependencyLocationsEnabled>
+                    <dependencyLocationsEnabled>false</dependencyLocationsEnabled>
                 </configuration>
-				<reportSets>
-					<reportSet>
-						<inherited>true</inherited>
-						<reports>
-							<report>dependencies</report>
-							<report>dependency-convergence</report>
-							<report>plugins</report>
+                <reportSets>
+                    <reportSet>
+                        <inherited>true</inherited>
+                        <reports>
+                            <report>dependencies</report>
+                            <report>dependency-convergence</report>
+                            <report>plugins</report>
                             <report>summary</report>
-						</reports>
-					</reportSet>
-				</reportSets>
-			</plugin>
-		</plugins>
-	</reporting>
+                        </reports>
+                    </reportSet>
+                </reportSets>
+            </plugin>
+        </plugins>
+    </reporting>
 
     <build>
         <resources>
@@ -129,7 +130,7 @@
                                         </goals>
                                     </pluginExecutionFilter>
                                     <action>
-                                        <ignore />
+                                        <ignore/>
                                     </action>
                                 </pluginExecution>
                             </pluginExecutions>
@@ -140,11 +141,11 @@
         </pluginManagement>
     </build>
 
-	<dependencies>
-		<dependency>
-			<groupId>joda-time</groupId>
-			<artifactId>joda-time</artifactId>
-		</dependency>
+    <dependencies>
+        <dependency>
+            <groupId>joda-time</groupId>
+            <artifactId>joda-time</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.apache.geronimo.specs</groupId>
             <artifactId>geronimo-atinject_1.0_spec</artifactId>
@@ -171,7 +172,6 @@
         </dependency>
 
 
-
         <dependency>
             <groupId>org.apache.isis.core</groupId>
             <artifactId>isis-core-unittestsupport</artifactId>
@@ -185,6 +185,6 @@
             <optional>true</optional>
         </dependency>
 
-   </dependencies>
+    </dependencies>
 
 </project>

http://git-wip-us.apache.org/repos/asf/isis/blob/e08e261a/core/maven-plugin/pom.xml
----------------------------------------------------------------------
diff --git a/core/maven-plugin/pom.xml b/core/maven-plugin/pom.xml
new file mode 100644
index 0000000..f9e60fe
--- /dev/null
+++ b/core/maven-plugin/pom.xml
@@ -0,0 +1,310 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.isis.core</groupId>
+        <artifactId>isis</artifactId>
+        <version>1.8.0-SNAPSHOT</version>
+    </parent>
+
+    <groupId>org.apache.isis.tool</groupId>
+    <artifactId>isis-maven-plugin</artifactId>
+
+    <packaging>maven-plugin</packaging>
+
+    <name>Isis Maven Plugin (isis-maven-plugin)</name>
+    <description>
+        Maven plugin for Apache Isis, allowing the metamodel to be validated as part of the build process.
+    </description>
+
+    <properties>
+        <siteBaseDir>..</siteBaseDir>
+        <relativeUrl>maven-plugin/</relativeUrl>
+    </properties>
+
+    <!-- used in Site generation for relative references. -->
+    <url>http://isis.apache.org/${relativeUrl}</url>
+
+    <prerequisites>
+        <maven>3.0.4</maven>
+    </prerequisites>
+
+    <build>
+
+        <pluginManagement>
+            <plugins>
+                <!-- Apache Release Audit Tool -->
+                <plugin>
+                    <groupId>org.apache.rat</groupId>
+                    <artifactId>apache-rat-plugin</artifactId>
+                    <version>0.10</version>
+                    <configuration>
+                        <excludes>
+                            <!--
+                            overriding inherited excludes from oia.core:isis
+                            with a more specific set for this component
+                             -->
+                            <exclude>**/target/**</exclude>
+                            <exclude>**/target-ide/**</exclude>
+
+                            <exclude>**/*.project</exclude>
+                            <exclude>**/.classpath</exclude>
+                            <exclude>**/.settings/**</exclude>
+                        </excludes>
+                    </configuration>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-plugin-plugin</artifactId>
+                <configuration>
+                    <goalPrefix>configurator</goalPrefix>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>default-descriptor</id>
+                        <goals>
+                            <goal>descriptor</goal>
+                        </goals>
+                        <phase>process-classes</phase>
+                    </execution>
+                    <execution>
+                        <id>help-descriptor</id>
+                        <goals>
+                            <goal>helpmojo</goal>
+                        </goals>
+                        <phase>process-classes</phase>
+                    </execution>
+                </executions>
+            </plugin>
+            <!--
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-toolchains-plugin</artifactId>
+                <version>1.0</version>
+                <executions>
+                    <execution>
+                        <phase>validate</phase>
+                        <goals>
+                            <goal>toolchain</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <configuration>
+                    <toolchains>
+                        <jdk>
+                            <version>1.5</version>
+                        </jdk>
+                    </toolchains>
+                </configuration>
+            </plugin>
+             -->
+        </plugins>
+    </build>
+
+    <dependencies>
+
+        <dependency>
+            <groupId>org.apache.isis.core</groupId>
+            <artifactId>isis-core-runtime</artifactId>
+        </dependency>
+
+        <!-- 
+        the plethora of exclusions in the following dependencies
+        are to ensure dependency convergence.
+        
+        In some cases, what would have been a transitive dependency
+        is added as a direct dependency in order that its divergent dependency
+        can be excluded.
+        
+        It's all a bit of a pig's ear...
+        -->
+
+        <dependency>
+            <groupId>org.apache.maven</groupId>
+            <artifactId>maven-plugin-api</artifactId>
+            <version>3.0.5</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.codehaus.plexus</groupId>
+            <artifactId>plexus-utils</artifactId>
+            <version>2.1</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.maven.plugin-tools</groupId>
+            <artifactId>maven-plugin-annotations</artifactId>
+            <version>3.2</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.apache.maven</groupId>
+                    <artifactId>maven-artifact</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.maven</groupId>
+            <artifactId>maven-core</artifactId>
+            <version>3.0.5</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.codehaus.plexus</groupId>
+                    <artifactId>plexus-utils</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.maven</groupId>
+            <artifactId>maven-model</artifactId>
+            <version>3.0.5</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.codehaus.plexus</groupId>
+                    <artifactId>plexus-utils</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.maven</groupId>
+            <artifactId>maven-model-builder</artifactId>
+            <version>3.0.5</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.codehaus.plexus</groupId>
+                    <artifactId>plexus-utils</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.maven</groupId>
+            <artifactId>maven-settings</artifactId>
+            <version>3.0.5</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.codehaus.plexus</groupId>
+                    <artifactId>plexus-utils</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.maven</groupId>
+            <artifactId>maven-artifact</artifactId>
+            <version>3.0.5</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.codehaus.plexus</groupId>
+                    <artifactId>plexus-utils</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.maven</groupId>
+            <artifactId>maven-project</artifactId>
+            <version>3.0-alpha-2</version>
+            <exclusions>
+                <!-- for dependency convergence -->
+                <exclusion>
+                    <groupId>org.apache.maven</groupId>
+                    <artifactId>maven-core</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.maven</groupId>
+                    <artifactId>maven-model</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.maven</groupId>
+                    <artifactId>maven-compat</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.codehaus.plexus</groupId>
+                    <artifactId>plexus-container-default</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.codehaus.plexus</groupId>
+                    <artifactId>plexus-utils</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.codehaus.plexus</groupId>
+                    <artifactId>plexus-interpolation</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.maven</groupId>
+            <artifactId>maven-compat</artifactId>
+            <version>3.0.5</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.codehaus.plexus</groupId>
+                    <artifactId>plexus-utils</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <dependency>
+            <groupId>org.codehaus.plexus</groupId>
+            <artifactId>plexus-container-default</artifactId>
+            <version>1.5.5</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.codehaus.plexus</groupId>
+                    <artifactId>plexus-classworlds</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.codehaus.plexus</groupId>
+                    <artifactId>plexus-utils</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>com.google.collections</groupId>
+                    <artifactId>google-collections</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <dependency>
+            <groupId>org.sonatype.plexus</groupId>
+            <artifactId>plexus-sec-dispatcher</artifactId>
+            <version>1.3</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.codehaus.plexus</groupId>
+                    <artifactId>plexus-utils</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.maven</groupId>
+            <artifactId>maven-toolchain</artifactId>
+            <version>3.0-alpha-2</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.apache.maven</groupId>
+                    <artifactId>maven-core</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.maven</groupId>
+                    <artifactId>maven-compat</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+</project>

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

http://git-wip-us.apache.org/repos/asf/isis/blob/e08e261a/core/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/ValidateMojo.java
----------------------------------------------------------------------
diff --git a/core/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/ValidateMojo.java b/core/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/ValidateMojo.java
new file mode 100644
index 0000000..49041ad
--- /dev/null
+++ b/core/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/ValidateMojo.java
@@ -0,0 +1,171 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.tool.mavenplugin;
+
+import java.io.File;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Set;
+import org.apache.maven.model.Plugin;
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.ResolutionScope;
+import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.util.xml.Xpp3Dom;
+import org.apache.isis.core.commons.config.IsisConfiguration;
+import org.apache.isis.core.commons.config.IsisConfigurationBuilderDefault;
+import org.apache.isis.core.metamodel.app.IsisMetaModel;
+import org.apache.isis.core.metamodel.runtimecontext.noruntime.RuntimeContextNoRuntime;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.metamodel.specloader.validator.ValidationFailures;
+import org.apache.isis.core.runtime.services.ServicesInstallerFromConfigurationAndAnnotation;
+import org.apache.isis.core.runtime.system.DeploymentType;
+import org.apache.isis.progmodels.dflt.ProgrammingModelFacetsJava5;
+import org.apache.isis.tool.mavenplugin.util.IsisMetaModels;
+import org.apache.isis.tool.mavenplugin.util.MavenProjects;
+import org.apache.isis.tool.mavenplugin.util.Xpp3Doms;
+
+/**
+ * 
+ * 
+ *
+ */
+@Mojo(
+        name = "validate",
+        defaultPhase = LifecyclePhase.TEST,
+        requiresProject = true,
+        requiresDependencyResolution = ResolutionScope.COMPILE,
+        requiresDependencyCollection = ResolutionScope.COMPILE
+)
+public class ValidateMojo extends AbstractMojo {
+
+    private static final String CURRENT_PLUGIN_KEY = "org.apache.isis.tool:isis-maven-plugin";
+
+    @Component
+    protected MavenProject mavenProject;
+
+    public void execute() throws MojoExecutionException, MojoFailureException {
+
+        final List<Object> serviceList = getServiceList();
+        if(serviceList.size() == 0) {
+            return;
+        }
+        getLog().info("Found " + serviceList.size() + " services");
+
+        final ValidationFailures validationFailures = bootIsisThenShutdown(serviceList);
+        if (validationFailures.occurred()) {
+            throwFailureException(validationFailures.getNumberOfMessages() + " problems found.", validationFailures.getMessages());
+        }
+    }
+
+    private ValidationFailures bootIsisThenShutdown(List<Object> serviceList) throws MojoExecutionException, MojoFailureException {
+        IsisMetaModel isisMetaModel = null;
+        try {
+            isisMetaModel = bootstrapIsis(serviceList);
+            final Collection<ObjectSpecification> objectSpecifications = isisMetaModel.getSpecificationLoader().allSpecifications();
+            for (ObjectSpecification objectSpecification : objectSpecifications) {
+                getLog().debug("loaded: " + objectSpecification.getFullIdentifier());
+            }
+            return isisMetaModel.getValidationFailures();
+
+        } finally {
+            IsisMetaModels.disposeSafely(isisMetaModel);
+        }
+    }
+
+
+    private List<Object> getServiceList() throws MojoFailureException {
+        IsisConfiguration isisConfiguration = getIsisConfiguration();
+        if(isisConfiguration == null) {
+            return Collections.emptyList();
+        }
+
+        final ServicesInstallerFromConfigurationAndAnnotation servicesInstaller = new ServicesInstallerFromConfigurationAndAnnotation();
+        servicesInstaller.setIgnoreFailures(true);
+        servicesInstaller.setConfiguration(isisConfiguration);
+        servicesInstaller.init();
+        return servicesInstaller.getServices(DeploymentType.SERVER_PROTOTYPE);
+    }
+
+    private IsisConfiguration getIsisConfiguration() throws MojoFailureException {
+        final Plugin plugin = MavenProjects.lookupPlugin(mavenProject, CURRENT_PLUGIN_KEY);
+        if(plugin == null) {
+            return null;
+        }
+        final Xpp3Dom configuration = (Xpp3Dom) plugin.getConfiguration();
+        if (configuration == null) {
+            throwFailureException("Configuration error", "No <configuration> element found");
+        }
+        final Xpp3Dom servicesEl = configuration.getChild("isisConfigDir");
+        if (servicesEl == null) {
+            throwFailureException("Configuration error", "No <configuration>/<isisConfigDir> element found");
+        }
+        final String isisConfigDir = Xpp3Doms.GET_VALUE.apply(servicesEl);
+
+        final File basedir = mavenProject.getBasedir();
+        final String absoluteConfigDir = new File(basedir, isisConfigDir).getAbsolutePath();
+        final IsisConfigurationBuilderDefault configBuilder = new IsisConfigurationBuilderDefault(absoluteConfigDir);
+
+        configBuilder.addDefaultConfigurationResources();
+        return configBuilder.getConfiguration();
+    }
+
+    private static IsisMetaModel bootstrapIsis(List<Object> serviceList) {
+
+        IsisMetaModel isisMetaModel = new IsisMetaModel(
+                                            new RuntimeContextNoRuntime(),
+                                            new ProgrammingModelFacetsJava5(),
+                                            serviceList);
+        isisMetaModel.init();
+        return isisMetaModel;
+    }
+
+    private void throwFailureException(String errorMessage, Set<String> logMessages) throws MojoFailureException {
+        logErrors(logMessages);
+        throw new MojoFailureException(errorMessage);
+    }
+
+    private void throwFailureException(String errorMessage, String... logMessages) throws MojoFailureException {
+        logErrors(logMessages);
+        throw new MojoFailureException(errorMessage);
+    }
+
+    private void throwExecutionException(String errorMessage, Exception e) throws MojoExecutionException {
+        logErrors(errorMessage);
+        throw new MojoExecutionException(errorMessage, e);
+    }
+
+    private void logErrors(String... logMessages) {
+        getLog().error("");
+        for (String logMessage : logMessages) {
+            getLog().error(logMessage);
+        }
+        getLog().error("");
+    }
+
+    private void logErrors(Set<String> logMessages) {
+        logErrors(logMessages.toArray(new String[] {}));
+    }
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/e08e261a/core/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/util/IsisMetaModels.java
----------------------------------------------------------------------
diff --git a/core/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/util/IsisMetaModels.java b/core/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/util/IsisMetaModels.java
new file mode 100644
index 0000000..9d6cc50
--- /dev/null
+++ b/core/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/util/IsisMetaModels.java
@@ -0,0 +1,36 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.tool.mavenplugin.util;
+
+import org.apache.isis.core.metamodel.app.IsisMetaModel;
+
+public final class IsisMetaModels {
+    
+    private IsisMetaModels(){}
+
+    public static void disposeSafely(IsisMetaModel isisMetaModel) {
+        if (isisMetaModel == null) {
+            return;
+        }
+        isisMetaModel.shutdown();
+    }
+
+
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/e08e261a/core/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/util/Log4j.java
----------------------------------------------------------------------
diff --git a/core/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/util/Log4j.java b/core/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/util/Log4j.java
new file mode 100644
index 0000000..9f09d63
--- /dev/null
+++ b/core/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/util/Log4j.java
@@ -0,0 +1,48 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.tool.mavenplugin.util;
+
+import java.util.Enumeration;
+
+public final class Log4j {
+    
+    private Log4j(){}
+
+    public static void configureIfRequired() {
+        if(isConfigured()) return;
+        org.apache.log4j.BasicConfigurator.configure();
+        org.apache.log4j.LogManager.getRootLogger().setLevel(org.apache.log4j.Level.INFO);
+    }
+    
+    private static boolean isConfigured() {
+        Enumeration<?> appenders = org.apache.log4j.LogManager.getRootLogger().getAllAppenders();
+        if (appenders.hasMoreElements()) {
+            return true;
+        } 
+        Enumeration<?> loggers = org.apache.log4j.LogManager.getCurrentLoggers();
+        while (loggers.hasMoreElements()) {
+            org.apache.log4j.Logger c = (org.apache.log4j.Logger) loggers.nextElement();
+            if (c.getAllAppenders().hasMoreElements())
+                return true;
+        }
+        return false;
+    }
+
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/e08e261a/core/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/util/MavenProjects.java
----------------------------------------------------------------------
diff --git a/core/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/util/MavenProjects.java b/core/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/util/MavenProjects.java
new file mode 100644
index 0000000..d74dcdb
--- /dev/null
+++ b/core/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/util/MavenProjects.java
@@ -0,0 +1,43 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.tool.mavenplugin.util;
+
+import java.util.List;
+
+import org.apache.maven.model.Plugin;
+import org.apache.maven.project.MavenProject;
+
+public final class MavenProjects {
+    
+    private MavenProjects(){}
+
+    public static Plugin lookupPlugin(MavenProject mavenProject, String key) {
+    
+        @SuppressWarnings("unchecked")
+        List<Plugin> plugins = mavenProject.getBuildPlugins();
+    
+        for (Plugin plugin : plugins) {
+            if (key.equalsIgnoreCase(plugin.getKey())) {
+                return plugin;
+            }
+        }
+        return null;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/e08e261a/core/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/util/Xpp3Doms.java
----------------------------------------------------------------------
diff --git a/core/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/util/Xpp3Doms.java b/core/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/util/Xpp3Doms.java
new file mode 100644
index 0000000..ebb9f81
--- /dev/null
+++ b/core/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/util/Xpp3Doms.java
@@ -0,0 +1,36 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.tool.mavenplugin.util;
+
+import com.google.common.base.Function;
+
+import org.codehaus.plexus.util.xml.Xpp3Dom;
+
+public final class Xpp3Doms {
+    
+    private Xpp3Doms(){}
+
+    public static Function<Xpp3Dom, String> GET_VALUE = new Function<Xpp3Dom, String>(){
+
+        public String apply(Xpp3Dom el) {
+            return el.getValue();
+        }};
+
+
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/e08e261a/core/pom.xml
----------------------------------------------------------------------
diff --git a/core/pom.xml b/core/pom.xml
index bc1a720..5debabc 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -188,62 +188,62 @@
             <timezone>+0</timezone>
         </developer>
         <developer>
-            <id>rcmatthews</id>
-            <name>Robert Matthews</name>
-            <email>rmatthews@apache.org</email>
+            <id>dslaughter</id>
+            <name>Dave Slaughter</name>
+            <email>dslaughter@apache.org</email>
             <roles>
                 <role>pmc</role>
                 <role>committer</role>
             </roles>
-            <timezone>+0</timezone>
+            <timezone>-6</timezone>
         </developer>
         <developer>
-            <id>kevin</id>
-            <name>Kevin Meyer</name>
-            <email>kevin@apache.org</email>
+            <id>jcvanderwal</id>
+            <name>Jeroen van der Wal</name>
+            <email>jeroen@stromboli.it</email>
             <roles>
                 <role>pmc</role>
                 <role>committer</role>
             </roles>
-            <timezone>+2</timezone>
+            <timezone>+1</timezone>
         </developer>
         <developer>
-            <id>themalkolm</id>
-            <name>Alexander Krasnuhkin</name>
-            <email>themalkolm@apache.org</email>
+            <id>kevin</id>
+            <name>Kevin Meyer</name>
+            <email>kevin@apache.org</email>
             <roles>
                 <role>pmc</role>
                 <role>committer</role>
             </roles>
-            <timezone>+3</timezone>
+            <timezone>+2</timezone>
         </developer>
         <developer>
-            <id>dslaughter</id>
-            <name>Dave Slaughter</name>
-            <email>dslaughter@apache.org</email>
+            <id>madytyoo</id>
+            <name>Maurizio Taverna</name>
+            <email>tavernamaurizio@gmail.com</email>
             <roles>
                 <role>pmc</role>
                 <role>committer</role>
             </roles>
-            <timezone>-6</timezone>
+            <timezone>+1</timezone>
         </developer>
         <developer>
-            <id>jcvanderwal</id>
-            <name>Jeroen van der Wal</name>
-            <email>jeroen@stromboli.it</email>
+            <id>mgrigorov</id>
+            <name>Martin Grigorov</name>
+            <email>mgrigorov@apache.org</email>
             <roles>
                 <role>pmc</role>
                 <role>committer</role>
             </roles>
-            <timezone>+1</timezone>
+            <timezone>-6</timezone>
         </developer>
         <developer>
-            <id>madytyoo</id>
-            <name>Maurizio Taverna</name>
-            <email>tavernamaurizio@gmail.com</email>
+            <id>mnour</id>
+            <name>Mohammad Nour El-Din</name>
+            <email>mnour@apache.org</email>
             <roles>
                 <role>pmc</role>
-                <role>committer</role>
+                <role>mentor while incubating</role>
             </roles>
             <timezone>+1</timezone>
         </developer>
@@ -258,14 +258,14 @@
             <timezone>+1</timezone>
         </developer>
         <developer>
-            <id>mnour</id>
-            <name>Mohammad Nour El-Din</name>
-            <email>mnour@apache.org</email>
+            <id>rcmatthews</id>
+            <name>Robert Matthews</name>
+            <email>rmatthews@apache.org</email>
             <roles>
                 <role>pmc</role>
-                <role>mentor while incubating</role>
+                <role>committer</role>
             </roles>
-            <timezone>+1</timezone>
+            <timezone>+0</timezone>
         </developer>
         <developer>
             <id>struberg</id>
@@ -277,6 +277,16 @@
             </roles>
             <timezone>+1</timezone>
         </developer>
+        <developer>
+            <id>themalkolm</id>
+            <name>Alexander Krasnuhkin</name>
+            <email>themalkolm@apache.org</email>
+            <roles>
+                <role>pmc</role>
+                <role>committer</role>
+            </roles>
+            <timezone>+3</timezone>
+        </developer>
     </developers>
 
 
@@ -1153,7 +1163,6 @@ ${license.additional-notes}
                 <scope>test</scope>
             </dependency>
 
-
             <!-- security implementation(s) -->
             <dependency>
                 <groupId>org.apache.isis.core</groupId>
@@ -1166,6 +1175,13 @@ ${license.additional-notes}
                 <version>1.8.0-SNAPSHOT</version>
             </dependency>
 
+            <!-- Maven plugin -->
+            <dependency>
+                <groupId>org.apache.isis.tool</groupId>
+                <artifactId>isis-maven-plugin</artifactId>
+                <version>1.8.0-SNAPSHOT</version>
+            </dependency>
+
             <!-- JodaTime -->
             <dependency>
                 <groupId>joda-time</groupId>
@@ -1863,6 +1879,8 @@ ${license.additional-notes}
         <module>viewer-restfulobjects-applib</module>
         <module>viewer-restfulobjects-rendering</module>
         <module>viewer-restfulobjects-server</module>
+
+        <module>maven-plugin</module>
     </modules>
 
 </project>

http://git-wip-us.apache.org/repos/asf/isis/blob/e08e261a/example/application/todoapp/webapp/pom.xml
----------------------------------------------------------------------
diff --git a/example/application/todoapp/webapp/pom.xml b/example/application/todoapp/webapp/pom.xml
index 7ea3bac..269f9cc 100644
--- a/example/application/todoapp/webapp/pom.xml
+++ b/example/application/todoapp/webapp/pom.xml
@@ -39,6 +39,38 @@
     <build>
         <plugins>
             <plugin>
+                <groupId>org.apache.isis.tool</groupId>
+                <artifactId>isis-maven-plugin</artifactId>
+                <version>1.8.0-SNAPSHOT</version>
+                <configuration>
+                    <isisConfigDir>src\main\webapp\WEB-INF</isisConfigDir>
+                </configuration>
+                <dependencies>
+                    <dependency>
+                        <groupId>org.apache.isis.example.application</groupId>
+                        <artifactId>todoapp-fixture</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>
+
+            <plugin>
                 <groupId>org.mortbay.jetty</groupId>
                 <artifactId>maven-jetty-plugin</artifactId>
             </plugin>

http://git-wip-us.apache.org/repos/asf/isis/blob/e08e261a/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 0163bca..c24b464 100644
--- a/pom.xml
+++ b/pom.xml
@@ -60,8 +60,6 @@
                 <module>example/archetype/todoapp</module>
                 <module>example/archetype/simpleapp</module>
         
-                <module>tool/maven-plugin</module>
-
                 <module>component/viewer/scimpi</module>
             </modules>
         </profile>

http://git-wip-us.apache.org/repos/asf/isis/blob/e08e261a/tool/maven-plugin/pom.xml
----------------------------------------------------------------------
diff --git a/tool/maven-plugin/pom.xml b/tool/maven-plugin/pom.xml
deleted file mode 100644
index 2e2e789..0000000
--- a/tool/maven-plugin/pom.xml
+++ /dev/null
@@ -1,302 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-
-	<parent>
-		<groupId>org.apache.isis.core</groupId>
-		<artifactId>isis</artifactId>
-        <version>1.8.0-SNAPSHOT</version>
-		<relativePath>../../core/pom.xml</relativePath>
-	</parent>
-
-	<groupId>org.apache.isis.tool</groupId>
-	<artifactId>isis-maven-plugin</artifactId>
-    <version>1.0.0-SNAPSHOT</version>
-    
-	<packaging>maven-plugin</packaging>
-
-	<name>Isis Maven Mojo (isis-maven-plugin)</name>
-	<url>http://maven.apache.org</url>
-
-	<prerequisites>
-		<maven>3.0.4</maven>
-	</prerequisites>
-
-	<build>
-
-		<pluginManagement>
-			<plugins>
-                <!-- Apache Release Audit Tool -->
-                <plugin>
-                    <groupId>org.apache.rat</groupId>
-                    <artifactId>apache-rat-plugin</artifactId>
-                    <version>0.10</version>
-	                <configuration>
-	                    <excludes>
-	                    	<!-- 
-	                    	overriding inherited excludes from oia.core:isis 
-	                    	with a more specific set for this component
-	                    	 -->
-	                        <exclude>**/target/**</exclude>
-	                        <exclude>**/target-ide/**</exclude>
-
-	                        <exclude>**/*.project</exclude>
-	                        <exclude>**/.classpath</exclude>
-	                        <exclude>**/.settings/**</exclude>
-	                    </excludes>
-                    </configuration>
-	            </plugin>
-			</plugins>
-		</pluginManagement>
-		<plugins>
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-plugin-plugin</artifactId>
-				<configuration>
-				      <goalPrefix>configurator</goalPrefix>
-				    </configuration>
-				    <executions>
-				      <execution>
-				        <id>default-descriptor</id>
-				        <goals>
-				          <goal>descriptor</goal>
-				        </goals>
-				        <phase>process-classes</phase>
-				      </execution>
-				      <execution>
-				        <id>help-descriptor</id>
-				        <goals>
-				          <goal>helpmojo</goal>
-				        </goals>
-				        <phase>process-classes</phase>
-				      </execution>
-				    </executions>
-    			</plugin>
-			<!-- 
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-toolchains-plugin</artifactId>
-				<version>1.0</version>
-				<executions>
-					<execution>
-						<phase>validate</phase>
-						<goals>
-							<goal>toolchain</goal>
-						</goals>
-					</execution>
-				</executions>
-				<configuration>
-					<toolchains>
-						<jdk>
-							<version>1.5</version>
-						</jdk>
-					</toolchains>
-				</configuration>
-			</plugin>
-			 -->
-		</plugins>
-	</build>
-
-	<dependencies>
-
-		<dependency>
-		    <groupId>org.apache.isis.core</groupId>
-		    <artifactId>isis-core-runtime</artifactId>
-		</dependency>
-
-        <!-- 
-        all the plethora of exclusions in the following dependencies
-        are to ensure dependency convergence.
-        
-        In some cases, what would have been a transitive dependency
-        is added as a direct dependency in order that its divergent dependency
-        can be excluded.
-        
-        It's all a bit of a pig's ear...
-        -->
-
-		<dependency>
-		      <groupId>org.apache.maven</groupId>
-		      <artifactId>maven-plugin-api</artifactId>
-		      <version>3.0.5</version>
-	    </dependency>
-
-		<dependency>
-            <groupId>org.codehaus.plexus</groupId>
-            <artifactId>plexus-utils</artifactId>
-		    <version>2.1</version>
-	    </dependency>
-
-		<dependency>
-			<groupId>org.apache.maven.plugin-tools</groupId>
-			<artifactId>maven-plugin-annotations</artifactId>
-			<version>3.2</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.apache.maven</groupId>
-                    <artifactId>maven-artifact</artifactId>
-                </exclusion>
-            </exclusions>
-		</dependency>
-
-        <dependency>
-            <groupId>org.apache.maven</groupId>
-            <artifactId>maven-core</artifactId>
-            <version>3.0.5</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.codehaus.plexus</groupId>
-                    <artifactId>plexus-utils</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.maven</groupId>
-            <artifactId>maven-model</artifactId>
-            <version>3.0.5</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.codehaus.plexus</groupId>
-                    <artifactId>plexus-utils</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.maven</groupId>
-            <artifactId>maven-model-builder</artifactId>
-            <version>3.0.5</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.codehaus.plexus</groupId>
-                    <artifactId>plexus-utils</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.maven</groupId>
-            <artifactId>maven-settings</artifactId>
-            <version>3.0.5</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.codehaus.plexus</groupId>
-                    <artifactId>plexus-utils</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-
-		<dependency>
-			<groupId>org.apache.maven</groupId>
-			<artifactId>maven-artifact</artifactId>
-			<version>3.0.5</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.codehaus.plexus</groupId>
-                    <artifactId>plexus-utils</artifactId>
-                </exclusion>
-            </exclusions>
-		</dependency>
-
-		<dependency>
-			<groupId>org.apache.maven</groupId>
-			<artifactId>maven-project</artifactId>
-			<version>3.0-alpha-2</version>
-            <exclusions>
-                <!-- for dependency convergence -->
-                <exclusion>
-                    <groupId>org.apache.maven</groupId>
-                    <artifactId>maven-core</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>org.apache.maven</groupId>
-                    <artifactId>maven-model</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>org.apache.maven</groupId>
-                    <artifactId>maven-compat</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>org.codehaus.plexus</groupId>
-                    <artifactId>plexus-container-default</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>org.codehaus.plexus</groupId>
-                    <artifactId>plexus-utils</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>org.codehaus.plexus</groupId>
-                    <artifactId>plexus-interpolation</artifactId>
-                </exclusion>
-            </exclusions>
-		</dependency>
-        
-		<dependency>
-			<groupId>org.apache.maven</groupId>
-			<artifactId>maven-compat</artifactId>
-			<version>3.0.5</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.codehaus.plexus</groupId>
-                    <artifactId>plexus-utils</artifactId>
-                </exclusion>
-            </exclusions>
-		</dependency>
-        
-		<dependency>
-			<groupId>org.codehaus.plexus</groupId>
-			<artifactId>plexus-container-default</artifactId>
-			<version>1.5.5</version>
-            <exclusions>
-                <exclusion>
-        			<groupId>org.codehaus.plexus</groupId>
-        			<artifactId>plexus-classworlds</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>org.codehaus.plexus</groupId>
-                    <artifactId>plexus-utils</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>com.google.collections</groupId>
-                    <artifactId>google-collections</artifactId>
-                </exclusion>
-            </exclusions>
-		</dependency>
-        
-		<dependency>
-            <groupId>org.sonatype.plexus</groupId>
-            <artifactId>plexus-sec-dispatcher</artifactId>
-            <version>1.3</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.codehaus.plexus</groupId>
-                    <artifactId>plexus-utils</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        
-		<dependency>
-			<groupId>org.apache.maven</groupId>
-			<artifactId>maven-toolchain</artifactId>
-			<version>3.0-alpha-2</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.apache.maven</groupId>
-                    <artifactId>maven-core</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>org.apache.maven</groupId>
-                    <artifactId>maven-compat</artifactId>
-                </exclusion>
-            </exclusions>
-		</dependency>
-
-		<dependency>
-			<groupId>junit</groupId>
-			<artifactId>junit</artifactId>
-			<scope>test</scope>
-		</dependency>
-	</dependencies>
-
-</project>

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

http://git-wip-us.apache.org/repos/asf/isis/blob/e08e261a/tool/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/ValidateMojo.java
----------------------------------------------------------------------
diff --git a/tool/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/ValidateMojo.java b/tool/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/ValidateMojo.java
deleted file mode 100644
index 47b4bea..0000000
--- a/tool/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/ValidateMojo.java
+++ /dev/null
@@ -1,172 +0,0 @@
-package org.apache.isis.tool.mavenplugin;
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import java.io.File;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Set;
-import org.apache.maven.model.Plugin;
-import org.apache.maven.plugin.AbstractMojo;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.MojoFailureException;
-import org.apache.maven.plugins.annotations.Component;
-import org.apache.maven.plugins.annotations.LifecyclePhase;
-import org.apache.maven.plugins.annotations.Mojo;
-import org.apache.maven.plugins.annotations.ResolutionScope;
-import org.apache.maven.project.MavenProject;
-import org.codehaus.plexus.util.xml.Xpp3Dom;
-import org.apache.isis.core.commons.config.IsisConfiguration;
-import org.apache.isis.core.commons.config.IsisConfigurationBuilderDefault;
-import org.apache.isis.core.metamodel.app.IsisMetaModel;
-import org.apache.isis.core.metamodel.runtimecontext.noruntime.RuntimeContextNoRuntime;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.specloader.validator.ValidationFailures;
-import org.apache.isis.core.runtime.services.ServicesInstallerFromConfigurationAndAnnotation;
-import org.apache.isis.core.runtime.system.DeploymentType;
-import org.apache.isis.progmodels.dflt.ProgrammingModelFacetsJava5;
-import org.apache.isis.tool.mavenplugin.util.IsisMetaModels;
-import org.apache.isis.tool.mavenplugin.util.MavenProjects;
-import org.apache.isis.tool.mavenplugin.util.Xpp3Doms;
-
-/**
- * 
- * 
- *
- */
-@Mojo(
-        name = "validate",
-        defaultPhase = LifecyclePhase.TEST,
-        requiresProject = true,
-        requiresDependencyResolution = ResolutionScope.COMPILE,
-        requiresDependencyCollection = ResolutionScope.COMPILE
-)
-public class ValidateMojo extends AbstractMojo {
-
-    private static final String CURRENT_PLUGIN_KEY = "org.apache.isis.tool:isis-maven-plugin";
-
-    @Component
-    protected MavenProject mavenProject;
-
-    public void execute() throws MojoExecutionException, MojoFailureException {
-
-        final List<Object> serviceList = getServiceList();
-        if(serviceList.size() == 0) {
-            return;
-        }
-        getLog().info("Found " + serviceList.size() + " services");
-
-        final ValidationFailures validationFailures = bootIsisThenShutdown(serviceList);
-        if (validationFailures.occurred()) {
-            throwFailureException(validationFailures.getNumberOfMessages() + " problems found.", validationFailures.getMessages());
-        }
-    }
-
-    private ValidationFailures bootIsisThenShutdown(List<Object> serviceList) throws MojoExecutionException, MojoFailureException {
-        IsisMetaModel isisMetaModel = null;
-        try {
-            isisMetaModel = bootstrapIsis(serviceList);
-            final Collection<ObjectSpecification> objectSpecifications = isisMetaModel.getSpecificationLoader().allSpecifications();
-            for (ObjectSpecification objectSpecification : objectSpecifications) {
-                getLog().debug("loaded: " + objectSpecification.getFullIdentifier());
-            }
-            return isisMetaModel.getValidationFailures();
-
-        } finally {
-            IsisMetaModels.disposeSafely(isisMetaModel);
-        }
-    }
-
-
-    private List<Object> getServiceList() throws MojoFailureException {
-        IsisConfiguration isisConfiguration = getIsisConfiguration();
-        if(isisConfiguration == null) {
-            return Collections.emptyList();
-        }
-
-        final ServicesInstallerFromConfigurationAndAnnotation servicesInstaller = new ServicesInstallerFromConfigurationAndAnnotation();
-        servicesInstaller.setIgnoreFailures(true);
-        servicesInstaller.setConfiguration(isisConfiguration);
-        servicesInstaller.init();
-        return servicesInstaller.getServices(DeploymentType.SERVER_PROTOTYPE);
-    }
-
-    private IsisConfiguration getIsisConfiguration() throws MojoFailureException {
-        final Plugin plugin = MavenProjects.lookupPlugin(mavenProject, CURRENT_PLUGIN_KEY);
-        if(plugin == null) {
-            return null;
-        }
-        final Xpp3Dom configuration = (Xpp3Dom) plugin.getConfiguration();
-        if (configuration == null) {
-            throwFailureException("Configuration error", "No <configuration> element found");
-        }
-        final Xpp3Dom servicesEl = configuration.getChild("isisConfigDir");
-        if (servicesEl == null) {
-            throwFailureException("Configuration error", "No <configuration>/<isisConfigDir> element found");
-        }
-        final String isisConfigDir = Xpp3Doms.GET_VALUE.apply(servicesEl);
-
-        final File basedir = mavenProject.getBasedir();
-        final String absoluteConfigDir = new File(basedir, isisConfigDir).getAbsolutePath();
-        final IsisConfigurationBuilderDefault configBuilder = new IsisConfigurationBuilderDefault(absoluteConfigDir);
-
-        configBuilder.addDefaultConfigurationResources();
-        return configBuilder.getConfiguration();
-    }
-
-    private static IsisMetaModel bootstrapIsis(List<Object> serviceList) {
-
-        IsisMetaModel isisMetaModel = new IsisMetaModel(
-                                            new RuntimeContextNoRuntime(),
-                                            new ProgrammingModelFacetsJava5(),
-                                            serviceList);
-        isisMetaModel.init();
-        return isisMetaModel;
-    }
-
-    private void throwFailureException(String errorMessage, Set<String> logMessages) throws MojoFailureException {
-        logErrors(logMessages);
-        throw new MojoFailureException(errorMessage);
-    }
-
-    private void throwFailureException(String errorMessage, String... logMessages) throws MojoFailureException {
-        logErrors(logMessages);
-        throw new MojoFailureException(errorMessage);
-    }
-
-    private void throwExecutionException(String errorMessage, Exception e) throws MojoExecutionException {
-        logErrors(errorMessage);
-        throw new MojoExecutionException(errorMessage, e);
-    }
-
-    private void logErrors(String... logMessages) {
-        getLog().error("");
-        for (String logMessage : logMessages) {
-            getLog().error(logMessage);
-        }
-        getLog().error("");
-    }
-
-    private void logErrors(Set<String> logMessages) {
-        logErrors(logMessages.toArray(new String[] {}));
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/e08e261a/tool/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/util/ClassRealms.java
----------------------------------------------------------------------
diff --git a/tool/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/util/ClassRealms.java b/tool/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/util/ClassRealms.java
deleted file mode 100644
index a51c595..0000000
--- a/tool/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/util/ClassRealms.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package org.apache.isis.tool.mavenplugin.util;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URL;
-
-import org.apache.maven.plugin.logging.Log;
-import org.codehaus.classworlds.ClassRealm;
-
-public final class ClassRealms {
-    
-    private ClassRealms(){}
-
-    public static void addFileToRealm(ClassRealm isisRealm, final File file, Log log) throws IOException, MalformedURLException {
-        log.info(file.getCanonicalPath());
-    
-        final URL url = file.toURI().toURL();
-        isisRealm.addConstituent(url);
-    }
-
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/e08e261a/tool/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/util/ClassWorlds.java
----------------------------------------------------------------------
diff --git a/tool/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/util/ClassWorlds.java b/tool/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/util/ClassWorlds.java
deleted file mode 100644
index 2388df6..0000000
--- a/tool/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/util/ClassWorlds.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package org.apache.isis.tool.mavenplugin.util;
-
-import org.codehaus.classworlds.ClassWorld;
-import org.codehaus.classworlds.NoSuchRealmException;
-
-public final class ClassWorlds {
-    
-    private ClassWorlds(){}
-
-    public static void disposeSafely(ClassWorld classWorld, String realmId) {
-        if (classWorld == null) {
-            return;
-        }
-        try {
-            classWorld.disposeRealm(realmId);
-        } catch (NoSuchRealmException e) {
-            // ignore
-        }
-    }
-
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/e08e261a/tool/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/util/IsisMetaModels.java
----------------------------------------------------------------------
diff --git a/tool/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/util/IsisMetaModels.java b/tool/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/util/IsisMetaModels.java
deleted file mode 100644
index 49c49d8..0000000
--- a/tool/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/util/IsisMetaModels.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package org.apache.isis.tool.mavenplugin.util;
-
-import org.apache.isis.core.metamodel.app.IsisMetaModel;
-
-public final class IsisMetaModels {
-    
-    private IsisMetaModels(){}
-
-    public static void disposeSafely(IsisMetaModel isisMetaModel) {
-        if (isisMetaModel == null) {
-            return;
-        }
-        isisMetaModel.shutdown();
-    }
-
-
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/e08e261a/tool/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/util/Log4j.java
----------------------------------------------------------------------
diff --git a/tool/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/util/Log4j.java b/tool/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/util/Log4j.java
deleted file mode 100644
index 38d4c66..0000000
--- a/tool/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/util/Log4j.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package org.apache.isis.tool.mavenplugin.util;
-
-import java.util.Enumeration;
-
-public final class Log4j {
-    
-    private Log4j(){}
-
-    public static void configureIfRequired() {
-        if(isConfigured()) return;
-        org.apache.log4j.BasicConfigurator.configure();
-        org.apache.log4j.LogManager.getRootLogger().setLevel(org.apache.log4j.Level.INFO);
-    }
-    
-    private static boolean isConfigured() {
-        Enumeration<?> appenders = org.apache.log4j.LogManager.getRootLogger().getAllAppenders();
-        if (appenders.hasMoreElements()) {
-            return true;
-        } 
-        Enumeration<?> loggers = org.apache.log4j.LogManager.getCurrentLoggers();
-        while (loggers.hasMoreElements()) {
-            org.apache.log4j.Logger c = (org.apache.log4j.Logger) loggers.nextElement();
-            if (c.getAllAppenders().hasMoreElements())
-                return true;
-        }
-        return false;
-    }
-
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/e08e261a/tool/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/util/MavenProjects.java
----------------------------------------------------------------------
diff --git a/tool/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/util/MavenProjects.java b/tool/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/util/MavenProjects.java
deleted file mode 100644
index f604251..0000000
--- a/tool/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/util/MavenProjects.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package org.apache.isis.tool.mavenplugin.util;
-
-import java.util.List;
-
-import org.apache.maven.model.Plugin;
-import org.apache.maven.project.MavenProject;
-
-public final class MavenProjects {
-    
-    private MavenProjects(){}
-
-    public static Plugin lookupPlugin(MavenProject mavenProject, String key) {
-    
-        @SuppressWarnings("unchecked")
-        List<Plugin> plugins = mavenProject.getBuildPlugins();
-    
-        for (Plugin plugin : plugins) {
-            if (key.equalsIgnoreCase(plugin.getKey())) {
-                return plugin;
-            }
-        }
-        return null;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/isis/blob/e08e261a/tool/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/util/Xpp3Doms.java
----------------------------------------------------------------------
diff --git a/tool/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/util/Xpp3Doms.java b/tool/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/util/Xpp3Doms.java
deleted file mode 100644
index dc26f29..0000000
--- a/tool/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/util/Xpp3Doms.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package org.apache.isis.tool.mavenplugin.util;
-
-import com.google.common.base.Function;
-
-import org.codehaus.plexus.util.xml.Xpp3Dom;
-
-public final class Xpp3Doms {
-    
-    private Xpp3Doms(){}
-
-    public static Function<Xpp3Dom, String> GET_VALUE = new Function<Xpp3Dom, String>(){
-
-        public String apply(Xpp3Dom el) {
-            return el.getValue();
-        }};
-
-
-}


[2/4] isis git commit: ISIS-284: moving isis-maven-plugin from todo app's webapp module and instead in the dom module. Supported this by extending the ServicesInstaller API, adding setIgnoreFailures.

Posted by da...@apache.org.
ISIS-284: moving isis-maven-plugin from todo app's webapp module and instead in the dom module.  Supported this by extending the ServicesInstaller API, adding setIgnoreFailures.

Also added into simpleapp example.


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

Branch: refs/heads/master
Commit: 6ef5a7df6f3249ef2744d5583b81d477f759efcd
Parents: e08e261
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Wed Dec 17 17:43:32 2014 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Wed Dec 17 17:43:32 2014 +0000

----------------------------------------------------------------------
 .../ServicesInstallerAnnotatedClass.java        |  4 ++
 .../isis/tool/mavenplugin/ValidateMojo.java     | 43 ++++++++++----------
 .../ResourceStreamSourceFileSystem.java         | 20 ++++++++-
 .../runtime/services/ServicesInstaller.java     |  2 +
 .../ServicesInstallerFromAnnotation.java        |  5 +++
 .../ServicesInstallerFromConfiguration.java     |  5 +++
 example/application/simpleapp/dom/pom.xml       | 32 +++++++++++++++
 example/application/todoapp/dom/pom.xml         | 33 +++++++++++++++
 example/application/todoapp/webapp/pom.xml      | 32 ---------------
 9 files changed, 121 insertions(+), 55 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/6ef5a7df/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/legacy/components/ServicesInstallerAnnotatedClass.java
----------------------------------------------------------------------
diff --git a/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/legacy/components/ServicesInstallerAnnotatedClass.java b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/legacy/components/ServicesInstallerAnnotatedClass.java
index 5208c88..3d6fec2 100644
--- a/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/legacy/components/ServicesInstallerAnnotatedClass.java
+++ b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/legacy/components/ServicesInstallerAnnotatedClass.java
@@ -84,4 +84,8 @@ public class ServicesInstallerAnnotatedClass extends ServicesInstallerAbstract {
         return listOf(List.class); // ie List<Object.class>, of services
     }
 
+    @Override
+    public void setIgnoreFailures(boolean ignoreFailures) {
+        // no-op
+    }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/6ef5a7df/core/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/ValidateMojo.java
----------------------------------------------------------------------
diff --git a/core/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/ValidateMojo.java b/core/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/ValidateMojo.java
index 49041ad..1db4ed2 100644
--- a/core/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/ValidateMojo.java
+++ b/core/maven-plugin/src/main/java/org/apache/isis/tool/mavenplugin/ValidateMojo.java
@@ -20,7 +20,6 @@ package org.apache.isis.tool.mavenplugin;
 
 import java.io.File;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.List;
 import java.util.Set;
 import org.apache.maven.model.Plugin;
@@ -39,6 +38,8 @@ import org.apache.isis.core.metamodel.app.IsisMetaModel;
 import org.apache.isis.core.metamodel.runtimecontext.noruntime.RuntimeContextNoRuntime;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.validator.ValidationFailures;
+import org.apache.isis.core.runtime.services.ServicesInstaller;
+import org.apache.isis.core.runtime.services.ServicesInstallerFromAnnotation;
 import org.apache.isis.core.runtime.services.ServicesInstallerFromConfigurationAndAnnotation;
 import org.apache.isis.core.runtime.system.DeploymentType;
 import org.apache.isis.progmodels.dflt.ProgrammingModelFacetsJava5;
@@ -46,11 +47,6 @@ import org.apache.isis.tool.mavenplugin.util.IsisMetaModels;
 import org.apache.isis.tool.mavenplugin.util.MavenProjects;
 import org.apache.isis.tool.mavenplugin.util.Xpp3Doms;
 
-/**
- * 
- * 
- *
- */
 @Mojo(
         name = "validate",
         defaultPhase = LifecyclePhase.TEST,
@@ -67,8 +63,9 @@ public class ValidateMojo extends AbstractMojo {
 
     public void execute() throws MojoExecutionException, MojoFailureException {
 
-        final List<Object> serviceList = getServiceList();
-        if(serviceList.size() == 0) {
+        final Plugin plugin = MavenProjects.lookupPlugin(mavenProject, CURRENT_PLUGIN_KEY);
+        final List<Object> serviceList = plugin != null ? serviceListFor(plugin) : null;
+        if(serviceList == null || serviceList.size() == 0) {
             return;
         }
         getLog().info("Found " + serviceList.size() + " services");
@@ -88,35 +85,35 @@ public class ValidateMojo extends AbstractMojo {
                 getLog().debug("loaded: " + objectSpecification.getFullIdentifier());
             }
             return isisMetaModel.getValidationFailures();
-
         } finally {
             IsisMetaModels.disposeSafely(isisMetaModel);
         }
     }
 
+    private List<Object> serviceListFor(Plugin plugin) throws MojoFailureException {
+        IsisConfiguration isisConfiguration = isisConfigurationFor(plugin);
 
-    private List<Object> getServiceList() throws MojoFailureException {
-        IsisConfiguration isisConfiguration = getIsisConfiguration();
+        final ServicesInstaller servicesInstaller;
         if(isisConfiguration == null) {
-            return Collections.emptyList();
+            servicesInstaller = new ServicesInstallerFromAnnotation();
+        } else {
+            final ServicesInstallerFromConfigurationAndAnnotation servicesInstallerFromConfigurationAndAnnotation = new ServicesInstallerFromConfigurationAndAnnotation();
+            servicesInstallerFromConfigurationAndAnnotation.setConfiguration(isisConfiguration);
+            servicesInstaller = servicesInstallerFromConfigurationAndAnnotation;
         }
 
-        final ServicesInstallerFromConfigurationAndAnnotation servicesInstaller = new ServicesInstallerFromConfigurationAndAnnotation();
         servicesInstaller.setIgnoreFailures(true);
-        servicesInstaller.setConfiguration(isisConfiguration);
         servicesInstaller.init();
+
         return servicesInstaller.getServices(DeploymentType.SERVER_PROTOTYPE);
     }
 
-    private IsisConfiguration getIsisConfiguration() throws MojoFailureException {
-        final Plugin plugin = MavenProjects.lookupPlugin(mavenProject, CURRENT_PLUGIN_KEY);
-        if(plugin == null) {
-            return null;
-        }
+    private IsisConfiguration isisConfigurationFor(final Plugin plugin) throws MojoFailureException {
         final Xpp3Dom configuration = (Xpp3Dom) plugin.getConfiguration();
         if (configuration == null) {
             throwFailureException("Configuration error", "No <configuration> element found");
         }
+
         final Xpp3Dom servicesEl = configuration.getChild("isisConfigDir");
         if (servicesEl == null) {
             throwFailureException("Configuration error", "No <configuration>/<isisConfigDir> element found");
@@ -124,9 +121,13 @@ public class ValidateMojo extends AbstractMojo {
         final String isisConfigDir = Xpp3Doms.GET_VALUE.apply(servicesEl);
 
         final File basedir = mavenProject.getBasedir();
-        final String absoluteConfigDir = new File(basedir, isisConfigDir).getAbsolutePath();
+        final File file = new File(basedir, isisConfigDir);
+        final String absoluteConfigDir = file.getAbsolutePath();
+        if(!file.exists() || !file.isDirectory()) {
+            throwFailureException("Configuration error",
+                    String.format("isisConfigDir (%s) does not exist or is not a directory", absoluteConfigDir));
+        }
         final IsisConfigurationBuilderDefault configBuilder = new IsisConfigurationBuilderDefault(absoluteConfigDir);
-
         configBuilder.addDefaultConfigurationResources();
         return configBuilder.getConfiguration();
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/6ef5a7df/core/metamodel/src/main/java/org/apache/isis/core/commons/resource/ResourceStreamSourceFileSystem.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/commons/resource/ResourceStreamSourceFileSystem.java b/core/metamodel/src/main/java/org/apache/isis/core/commons/resource/ResourceStreamSourceFileSystem.java
index 1c497fb..cec06d8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/commons/resource/ResourceStreamSourceFileSystem.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/commons/resource/ResourceStreamSourceFileSystem.java
@@ -23,6 +23,7 @@ import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
+import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 
@@ -31,8 +32,23 @@ public class ResourceStreamSourceFileSystem extends ResourceStreamSourceAbstract
     /**
      * Factory method to guard against nulls
      */
-    public static ResourceStreamSource create(final String directory2) {
-        return directory2 != null ? new ResourceStreamSourceFileSystem(directory2) : null;
+    public static ResourceStreamSource create(final String directory) {
+        if(directory == null) {
+            return null;
+        }
+        final File file = new File(directory);
+        if(!file.exists()) {
+            return null;
+        }
+        if (!file.isDirectory()) {
+            return null;
+        }
+        try {
+            return new ResourceStreamSourceFileSystem(file.getCanonicalPath());
+        } catch (IOException e) {
+            // shouldn't happen given earlier checks.
+            throw new RuntimeException(e);
+        }
     }
 
     private final String directory;

http://git-wip-us.apache.org/repos/asf/isis/blob/6ef5a7df/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServicesInstaller.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServicesInstaller.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServicesInstaller.java
index 0c1e88f..250a60c 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServicesInstaller.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServicesInstaller.java
@@ -34,4 +34,6 @@ public interface ServicesInstaller extends Installer {
     static String TYPE = "services-installer";
 
     List<Object> getServices(DeploymentType deploymentType);
+
+    void setIgnoreFailures(boolean ignoreFailures);
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/6ef5a7df/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServicesInstallerFromAnnotation.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServicesInstallerFromAnnotation.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServicesInstallerFromAnnotation.java
index a14ed16..1a20925 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServicesInstallerFromAnnotation.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServicesInstallerFromAnnotation.java
@@ -100,6 +100,11 @@ public class ServicesInstallerFromAnnotation extends InstallerAbstract implement
         this.packagePrefixes = Joiner.on(",").join(packagePrefixes);
     }
 
+    @Override
+    public void setIgnoreFailures(boolean ignoreFailures) {
+        // no-op
+    }
+
 
     public void init() {
         initIfRequired();

http://git-wip-us.apache.org/repos/asf/isis/blob/6ef5a7df/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServicesInstallerFromConfiguration.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServicesInstallerFromConfiguration.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServicesInstallerFromConfiguration.java
index 8d3b602..dff7bd0 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServicesInstallerFromConfiguration.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServicesInstallerFromConfiguration.java
@@ -66,6 +66,10 @@ public class ServicesInstallerFromConfiguration extends InstallerAbstract implem
 
     private Map<DeploymentType, List<Object>> servicesByDeploymentType = Maps.newHashMap();
 
+    @Override
+    public void setIgnoreFailures(boolean ignoreFailures) {
+        // no-op
+    }
 
     public void init() {
         initIfRequired();
@@ -109,6 +113,7 @@ public class ServicesInstallerFromConfiguration extends InstallerAbstract implem
         return serviceList;
     }
 
+
     // //////////////////////////////////////
 
     public void appendServices(

http://git-wip-us.apache.org/repos/asf/isis/blob/6ef5a7df/example/application/simpleapp/dom/pom.xml
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/dom/pom.xml b/example/application/simpleapp/dom/pom.xml
index 3956909..6b8dbdb 100644
--- a/example/application/simpleapp/dom/pom.xml
+++ b/example/application/simpleapp/dom/pom.xml
@@ -48,6 +48,38 @@
         </resources>
         <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>
+            <plugin>
                 <groupId>org.datanucleus</groupId>
                 <artifactId>datanucleus-maven-plugin</artifactId>
                 <version>${datanucleus-maven-plugin.version}</version>

http://git-wip-us.apache.org/repos/asf/isis/blob/6ef5a7df/example/application/todoapp/dom/pom.xml
----------------------------------------------------------------------
diff --git a/example/application/todoapp/dom/pom.xml b/example/application/todoapp/dom/pom.xml
index cd4ffc3..c58f4c8 100644
--- a/example/application/todoapp/dom/pom.xml
+++ b/example/application/todoapp/dom/pom.xml
@@ -48,6 +48,39 @@
         </resources>
         <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>
+
+            <plugin>
                 <groupId>org.datanucleus</groupId>
                 <artifactId>datanucleus-maven-plugin</artifactId>
                 <version>${datanucleus-maven-plugin.version}</version>

http://git-wip-us.apache.org/repos/asf/isis/blob/6ef5a7df/example/application/todoapp/webapp/pom.xml
----------------------------------------------------------------------
diff --git a/example/application/todoapp/webapp/pom.xml b/example/application/todoapp/webapp/pom.xml
index 269f9cc..7ea3bac 100644
--- a/example/application/todoapp/webapp/pom.xml
+++ b/example/application/todoapp/webapp/pom.xml
@@ -39,38 +39,6 @@
     <build>
         <plugins>
             <plugin>
-                <groupId>org.apache.isis.tool</groupId>
-                <artifactId>isis-maven-plugin</artifactId>
-                <version>1.8.0-SNAPSHOT</version>
-                <configuration>
-                    <isisConfigDir>src\main\webapp\WEB-INF</isisConfigDir>
-                </configuration>
-                <dependencies>
-                    <dependency>
-                        <groupId>org.apache.isis.example.application</groupId>
-                        <artifactId>todoapp-fixture</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>
-
-            <plugin>
                 <groupId>org.mortbay.jetty</groupId>
                 <artifactId>maven-jetty-plugin</artifactId>
             </plugin>


[4/4] isis git commit: ISIS-928: recreating todoapp archetype

Posted by da...@apache.org.
ISIS-928: recreating todoapp archetype


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

Branch: refs/heads/master
Commit: f76185dedbb83b0cf68c7412e9445cd114d9b4b7
Parents: 857e356
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Wed Dec 17 18:15:02 2014 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Wed Dec 17 18:15:02 2014 +0000

----------------------------------------------------------------------
 .../resources/archetype-resources/dom/pom.xml   | 33 +++++++++++++++++
 .../dom/src/main/java/app/ToDoItemAnalysis.java |  6 ++--
 .../java/app/ToDoItemsByCategoryViewModel.java  |  6 ++--
 .../java/app/ToDoItemsByDateRangeViewModel.java |  4 +--
 .../dom/src/main/java/dom/todo/ToDoItem.java    | 10 +++---
 .../java/dom/todo/ToDoItemSubscriptions.java    | 10 +++---
 .../dom/src/main/java/dom/todo/ToDoItems.java   | 37 ++++++++++++--------
 .../fixture/todo/ToDoItemsFixturesService.java  | 22 ++++++------
 .../integtests/ToDoItemsIntegTestFixture.java   |  2 +-
 .../complete/ToDoItemCompleteAbstract.java      | 20 +----------
 .../complete/ToDoItemCompleteForBuyStamps.java  |  5 ---
 .../ToDoItemCompleteForWriteBlogPost.java       |  5 ---
 .../todo/items/create/ToDoItemAbstract.java     |  2 +-
 .../todo/items/delete/ToDoItemsDelete.java      | 15 --------
 .../todo/scenarios/ToDoItemsRecreate.java       | 26 +++++++-------
 .../ToDoItemsRecreateAndCompleteSeveral.java    | 34 +++++++++++++++---
 .../tests/ToDoItemContributionsIntegTest.java   | 10 +++---
 .../integration/tests/ToDoItemIntegTest.java    | 10 +++---
 .../main/java/webapp/CustomMementoService.java  |  2 +-
 .../prototyping/ExternalLinksService.java       |  5 +--
 .../prototyping/WicketDeveloperUtilities.java   |  4 ++-
 .../src/main/webapp/WEB-INF/isis.properties     | 18 ++++++----
 .../projects/basic/archetype.properties         |  2 +-
 23 files changed, 161 insertions(+), 127 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/f76185de/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
index 271e198..740c4c8 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/pom.xml
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/pom.xml
@@ -45,6 +45,39 @@
         </resources>
         <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>
+
+            <plugin>
                 <groupId>org.datanucleus</groupId>
                 <artifactId>datanucleus-maven-plugin</artifactId>
                 <version>${datanucleus-maven-plugin.version}</version>

http://git-wip-us.apache.org/repos/asf/isis/blob/f76185de/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
index 0937878..094b9f3 100644
--- 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
@@ -33,13 +33,13 @@ import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.ActionSemantics;
 import org.apache.isis.applib.annotation.ActionSemantics.Of;
 import org.apache.isis.applib.annotation.Bookmarkable;
-import org.apache.isis.applib.annotation.ClassLayout;
 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;
 
-@ClassLayout(named="Analysis")
-@DomainService(menuOrder = "20")
+@DomainServiceLayout(named="Analysis", menuOrder = "20")
+@DomainService()
 public class ToDoItemAnalysis {
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/f76185de/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
index 97e39d5..fda72fc 100644
--- 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
@@ -34,7 +34,7 @@ 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.Bookmarkable;
-import org.apache.isis.applib.annotation.ClassLayout;
+import org.apache.isis.applib.annotation.DomainObjectLayout;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Render;
 import org.apache.isis.applib.annotation.Render.Type;
@@ -42,8 +42,8 @@ import org.apache.isis.applib.annotation.Title;
 import org.apache.isis.applib.annotation.ViewModel;
 import org.apache.isis.applib.util.ObjectContracts;
 
-@ClassLayout(
-        named="By Category"
+@DomainObjectLayout(
+    named="By Category"
 )
 @Bookmarkable
 @ViewModel

http://git-wip-us.apache.org/repos/asf/isis/blob/f76185de/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
index 7166028..001bdf4 100644
--- 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
@@ -32,7 +32,7 @@ import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
 import org.joda.time.DateTime;
 import org.apache.isis.applib.annotation.Bookmarkable;
-import org.apache.isis.applib.annotation.ClassLayout;
+import org.apache.isis.applib.annotation.DomainObjectLayout;
 import org.apache.isis.applib.annotation.Render;
 import org.apache.isis.applib.annotation.Render.Type;
 import org.apache.isis.applib.annotation.Title;
@@ -40,7 +40,7 @@ import org.apache.isis.applib.annotation.ViewModel;
 import org.apache.isis.applib.services.clock.ClockService;
 import org.apache.isis.applib.util.ObjectContracts;
 
-@ClassLayout(
+@DomainObjectLayout(
     named="By Date Range"
 )
 @Bookmarkable

http://git-wip-us.apache.org/repos/asf/isis/blob/f76185de/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItem.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItem.java b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItem.java
index 2e4dd33..27749f4 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItem.java
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItem.java
@@ -51,10 +51,10 @@ import org.apache.isis.applib.annotation.Bulk;
 import org.apache.isis.applib.annotation.Bulk.AppliesTo;
 import org.apache.isis.applib.annotation.Bulk.InteractionContext.InvokedAs;
 import org.apache.isis.applib.annotation.CollectionInteraction;
+import org.apache.isis.applib.annotation.CollectionLayout;
 import org.apache.isis.applib.annotation.Disabled;
 import org.apache.isis.applib.annotation.Hidden;
 import org.apache.isis.applib.annotation.MinLength;
-import org.apache.isis.applib.annotation.Named;
 import org.apache.isis.applib.annotation.ObjectType;
 import org.apache.isis.applib.annotation.Optional;
 import org.apache.isis.applib.annotation.ParameterLayout;
@@ -62,7 +62,6 @@ import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.applib.annotation.PropertyInteraction;
 import org.apache.isis.applib.annotation.Prototype;
 import org.apache.isis.applib.annotation.RegEx;
-import org.apache.isis.applib.annotation.SortedBy;
 import org.apache.isis.applib.annotation.TypicalLength;
 import org.apache.isis.applib.security.UserMemento;
 import org.apache.isis.applib.services.eventbus.ActionInteractionEvent;
@@ -212,7 +211,7 @@ public class ToDoItem implements Categorized, Comparable<ToDoItem> {
         Professional {
             @Override
             public List<Subcategory> subcategories() {
-                return Arrays.asList(null, Subcategory.OpenSource, Subcategory.Consulting, Subcategory.Education);
+                return Arrays.asList(null, Subcategory.OpenSource, Subcategory.Consulting, Subcategory.Education, Subcategory.Marketing);
             }
         }, Domestic {
             @Override
@@ -498,7 +497,7 @@ public class ToDoItem implements Categorized, Comparable<ToDoItem> {
     private SortedSet<ToDoItem> dependencies = new TreeSet<ToDoItem>();
 
     @CollectionInteraction
-    @SortedBy(DependenciesComparator.class)
+    @CollectionLayout(sortedBy = DependenciesComparator.class)
     public SortedSet<ToDoItem> getDependencies() {
         return dependencies;
     }
@@ -659,7 +658,8 @@ public class ToDoItem implements Categorized, Comparable<ToDoItem> {
     
     @Prototype
     @ActionSemantics(Of.SAFE)
-    public void demoException(final @Named("Type") DemoExceptionType type) {
+    public void demoException(
+            final @ParameterLayout(named="Type") DemoExceptionType type) {
         switch(type) {
         case NonRecoverableException:
             throw new NonRecoverableException("Demo throwing " + type.name());

http://git-wip-us.apache.org/repos/asf/isis/blob/f76185de/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItemSubscriptions.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItemSubscriptions.java b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItemSubscriptions.java
index b018f07..f8cacc4 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItemSubscriptions.java
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItemSubscriptions.java
@@ -35,11 +35,11 @@ import org.apache.isis.applib.RecoverableException;
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.ActionSemantics;
 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.Named;
 import org.apache.isis.applib.annotation.NotContributed;
+import org.apache.isis.applib.annotation.ParameterLayout;
 import org.apache.isis.applib.annotation.Programmatic;
-import org.apache.isis.applib.annotation.Prototype;
 import org.apache.isis.applib.services.eventbus.ActionInteractionEvent;
 import org.apache.isis.applib.services.eventbus.CollectionInteractionEvent;
 import org.apache.isis.applib.services.eventbus.EventBusService;
@@ -59,7 +59,8 @@ import static com.google.common.collect.Lists.newArrayList;
  *     vetoing the change).
  * </p>
  */
-@DomainService(menuBar = DomainService.MenuBar.SECONDARY, menuOrder = "30")
+@DomainService
+@DomainServiceLayout(menuBar = DomainServiceLayout.MenuBar.SECONDARY, menuOrder = "30")
 public class ToDoItemSubscriptions {
 
     //region > LOG
@@ -135,7 +136,8 @@ public class ToDoItemSubscriptions {
     )
     @NotContributed
     @ActionSemantics(ActionSemantics.Of.IDEMPOTENT)
-    public void subscriberBehaviour(@Named("Behaviour") Behaviour behaviour) {
+    public void subscriberBehaviour(
+            @ParameterLayout(named="Behaviour") Behaviour behaviour) {
         this.behaviour = behaviour;
         container.informUser("Subscriber behaviour set to: " + behaviour);
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/f76185de/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItems.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItems.java b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItems.java
index 6bbcf10..aaabb71 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItems.java
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/dom/src/main/java/dom/todo/ToDoItems.java
@@ -29,28 +29,28 @@ import java.util.List;
 import com.google.common.base.Predicates;
 import org.joda.time.LocalDate;
 import org.apache.isis.applib.DomainObjectContainer;
+import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.ActionSemantics;
 import org.apache.isis.applib.annotation.ActionSemantics.Of;
 import org.apache.isis.applib.annotation.Bookmarkable;
-import org.apache.isis.applib.annotation.ClassLayout;
-import org.apache.isis.applib.annotation.CssClassFa;
 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.Named;
 import org.apache.isis.applib.annotation.Optional;
 import org.apache.isis.applib.annotation.ParameterLayout;
 import org.apache.isis.applib.annotation.Programmatic;
-import org.apache.isis.applib.annotation.Prototype;
 import org.apache.isis.applib.annotation.RegEx;
 import org.apache.isis.applib.query.QueryDefault;
 import org.apache.isis.applib.services.clock.ClockService;
 
-@ClassLayout(named="ToDos")
-@DomainService(menuOrder = "10", repositoryFor = ToDoItem.class)
+@DomainServiceLayout(named="ToDos", menuOrder = "10")
+@DomainService(repositoryFor = ToDoItem.class)
 public class ToDoItems {
 
     //region > notYetComplete (action)
-    @CssClassFa("fa fa-thumbs-down")
+    @ActionLayout(
+        cssClassFa = "fa fa-thumbs-down"
+    )
     @Bookmarkable
     @ActionSemantics(Of.SAFE)
     @MemberOrder(sequence = "10")
@@ -72,7 +72,9 @@ public class ToDoItems {
     //endregion
 
     //region > complete (action)
-    @CssClassFa("fa fa-thumbs-up")
+    @ActionLayout(
+        cssClassFa = "fa fa-thumbs-up"
+    )
     @ActionSemantics(Of.SAFE)
     @MemberOrder(sequence = "20")
     public List<ToDoItem> complete() {
@@ -93,11 +95,13 @@ public class ToDoItems {
     //endregion
 
     //region > categorized (action)
-	@SuppressWarnings("unchecked")
-	@Bookmarkable
+    @SuppressWarnings("unchecked")
+    @Bookmarkable
     @ActionSemantics(Of.SAFE)
     @MemberOrder(sequence = "40")
-    @CssClassFa("fa fa-question")
+    @ActionLayout(
+        cssClassFa = "fa fa-question"
+    )
     public List<ToDoItem> categorized(
     		@ParameterLayout(named="Category") final Category category,
     		@ParameterLayout(named="Subcategory") final Subcategory subcategory,
@@ -131,10 +135,11 @@ public class ToDoItems {
     //endregion
 
     //region > newToDo (action)
-    @CssClassFa("fa fa-plus")
+    @ActionLayout(cssClassFa = "fa fa-plus")
     @MemberOrder(sequence = "5")
     public ToDoItem newToDo(
-            final @RegEx(validation = "${symbol_escape}${symbol_escape}w[@&:${symbol_escape}${symbol_escape}-${symbol_escape}${symbol_escape},${symbol_escape}${symbol_escape}.${symbol_escape}${symbol_escape}+ ${symbol_escape}${symbol_escape}w]*") @Named("Description") String description, 
+            final @RegEx(validation = "${symbol_escape}${symbol_escape}w[@&:${symbol_escape}${symbol_escape}-${symbol_escape}${symbol_escape},${symbol_escape}${symbol_escape}.${symbol_escape}${symbol_escape}+ ${symbol_escape}${symbol_escape}w]*")
+                  @ParameterLayout(named="Description") String description,
             final @ParameterLayout(named="Category") Category category,
             final @Optional @ParameterLayout(named="Subcategory") Subcategory subcategory,
             final @Optional @ParameterLayout(named="Due by") LocalDate dueBy,
@@ -163,8 +168,10 @@ public class ToDoItems {
     //endregion
 
     //region > allToDos (action)
-    @CssClassFa("fa fa-globe")
-    @Prototype
+    @ActionLayout(
+        cssClassFa = "fa fa-globe",
+        prototype = true
+    )
     @ActionSemantics(Of.SAFE)
     @MemberOrder(sequence = "50")
     public List<ToDoItem> allToDos() {

http://git-wip-us.apache.org/repos/asf/isis/blob/f76185de/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/ToDoItemsFixturesService.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/ToDoItemsFixturesService.java b/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/ToDoItemsFixturesService.java
index 27fa0eb..6bad4ef 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/ToDoItemsFixturesService.java
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/ToDoItemsFixturesService.java
@@ -24,13 +24,12 @@ package fixture.todo;
 import fixture.todo.scenarios.ToDoItemsRecreateAndCompleteSeveral;
 
 import java.util.List;
-import org.apache.isis.applib.annotation.ClassLayout;
-import org.apache.isis.applib.annotation.CssClassFa;
+import org.apache.isis.applib.annotation.ActionLayout;
 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.Optional;
 import org.apache.isis.applib.annotation.ParameterLayout;
-import org.apache.isis.applib.annotation.Prototype;
 import org.apache.isis.applib.fixturescripts.FixtureResult;
 import org.apache.isis.applib.fixturescripts.FixtureScript;
 import org.apache.isis.applib.fixturescripts.FixtureScripts;
@@ -38,17 +37,18 @@ import org.apache.isis.applib.fixturescripts.FixtureScripts;
 /**
  * Enables fixtures to be installed from the application.
  */
-@ClassLayout(
-        named = "Prototyping"
-)
-@DomainService(menuBar = DomainService.MenuBar.SECONDARY, menuOrder = "10")
+@DomainService
+@DomainServiceLayout(named = "Prototyping", menuBar = DomainServiceLayout.MenuBar.SECONDARY, menuOrder = "10")
 public class ToDoItemsFixturesService extends FixtureScripts {
 
     public ToDoItemsFixturesService() {
         super("fixture.todo");
     }
 
-    @CssClassFa("fa fa-bolt")
+    @ActionLayout(
+        cssClassFa="fa fa-bolt",
+        prototype = true
+    )
     @Override
     public List<FixtureResult> runFixtureScript(
             final FixtureScript fixtureScript,
@@ -78,8 +78,10 @@ public class ToDoItemsFixturesService extends FixtureScripts {
     // //////////////////////////////////////
 
 
-    @Prototype
-    @CssClassFa("fa fa-list")
+    @ActionLayout(
+        cssClassFa="fa fa-list",
+        prototype = true
+    )
     @MemberOrder(sequence="20")
     public Object recreateToDoItemsReturnFirst() {
         final List<FixtureResult> run = findFixtureScriptFor(ToDoItemsRecreateAndCompleteSeveral.class).run(null);

http://git-wip-us.apache.org/repos/asf/isis/blob/f76185de/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/integtests/ToDoItemsIntegTestFixture.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/integtests/ToDoItemsIntegTestFixture.java b/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/integtests/ToDoItemsIntegTestFixture.java
index d8743b5..eb2c28f 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/integtests/ToDoItemsIntegTestFixture.java
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/integtests/ToDoItemsIntegTestFixture.java
@@ -37,7 +37,7 @@ public class ToDoItemsIntegTestFixture extends FixtureScript {
 
     @Override
     protected void execute(ExecutionContext executionContext) {
-        executeChild(new ToDoItemsRecreateAndCompleteSeveral(), executionContext);
+        executionContext.executeChild(this, new ToDoItemsRecreateAndCompleteSeveral());
     }
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/f76185de/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/items/actions/complete/ToDoItemCompleteAbstract.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/items/actions/complete/ToDoItemCompleteAbstract.java b/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/items/actions/complete/ToDoItemCompleteAbstract.java
index 383dee9..b1ffcd1 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/items/actions/complete/ToDoItemCompleteAbstract.java
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/items/actions/complete/ToDoItemCompleteAbstract.java
@@ -31,23 +31,6 @@ import org.apache.isis.applib.fixturescripts.FixtureScript;
 
 public abstract class ToDoItemCompleteAbstract extends FixtureScript {
 
-    @Override
-    protected void execute(ExecutionContext executionContext) {
-        validateParameters(executionContext);
-
-
-    }
-
-    /**
-     * Subclasses should call from within {@link ${symbol_pound}execute(org.apache.isis.applib.fixturescripts.FixtureScript.ExecutionContext)}.
-     */
-    protected void validateParameters(ExecutionContext executionContext) {
-        final String ownedBy = executionContext.getParameter("ownedBy");
-        if(ownedBy == null) {
-            throw new IllegalArgumentException("'ownedBy' must be specified");
-        }
-    }
-
     /**
      * Looks up item from repository, and completes.
      */
@@ -55,10 +38,9 @@ public abstract class ToDoItemCompleteAbstract extends FixtureScript {
         String ownedBy = executionContext.getParameter("ownedBy");
         final ToDoItem toDoItem = findToDoItem(description, ownedBy);
         toDoItem.setComplete(true);
-        executionContext.add(this, toDoItem);
+        executionContext.addResult(this, toDoItem);
     }
 
-
     private ToDoItem findToDoItem(final String description, final String ownedBy) {
         final Collection<ToDoItem> filtered = Collections2.filter(getContainer().allInstances(ToDoItem.class), new Predicate<ToDoItem>() {
             @Override

http://git-wip-us.apache.org/repos/asf/isis/blob/f76185de/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/items/actions/complete/ToDoItemCompleteForBuyStamps.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/items/actions/complete/ToDoItemCompleteForBuyStamps.java b/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/items/actions/complete/ToDoItemCompleteForBuyStamps.java
index 7f2bb5b..3a5d149 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/items/actions/complete/ToDoItemCompleteForBuyStamps.java
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/items/actions/complete/ToDoItemCompleteForBuyStamps.java
@@ -27,11 +27,6 @@ public class ToDoItemCompleteForBuyStamps extends ToDoItemCompleteAbstract {
 
     @Override
     protected void execute(ExecutionContext executionContext) {
-
-        // prereqs
-        executeChild(new ToDoItemForBuyStamps(), executionContext);
-
-        // this fixture
         complete(ToDoItemForBuyStamps.DESCRIPTION, executionContext);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/f76185de/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/items/actions/complete/ToDoItemCompleteForWriteBlogPost.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/items/actions/complete/ToDoItemCompleteForWriteBlogPost.java b/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/items/actions/complete/ToDoItemCompleteForWriteBlogPost.java
index 1288528..14e417f 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/items/actions/complete/ToDoItemCompleteForWriteBlogPost.java
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/items/actions/complete/ToDoItemCompleteForWriteBlogPost.java
@@ -27,11 +27,6 @@ public class ToDoItemCompleteForWriteBlogPost extends ToDoItemCompleteAbstract {
 
     @Override
     protected void execute(ExecutionContext executionContext) {
-
-        // prereqs
-        executeChild(new ToDoItemForWriteBlogPost(), executionContext);
-
-        // this fixture
         complete(ToDoItemForWriteBlogPost.DESCRIPTION, executionContext);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/f76185de/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/items/create/ToDoItemAbstract.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/items/create/ToDoItemAbstract.java b/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/items/create/ToDoItemAbstract.java
index b9ce83a..305cef7 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/items/create/ToDoItemAbstract.java
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/items/create/ToDoItemAbstract.java
@@ -49,7 +49,7 @@ public abstract class ToDoItemAbstract extends FixtureScript {
         // execute
         ToDoItem newToDo = toDoItems.newToDo(
                 description, category, subcategory, ownedBy, dueBy, cost);
-        return executionContext.add(this, newToDo);
+        return executionContext.addResult(this, newToDo);
     }
 
     protected LocalDate nowPlusDays(int days) {

http://git-wip-us.apache.org/repos/asf/isis/blob/f76185de/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/items/delete/ToDoItemsDelete.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/items/delete/ToDoItemsDelete.java b/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/items/delete/ToDoItemsDelete.java
index 656d625..429d596 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/items/delete/ToDoItemsDelete.java
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/items/delete/ToDoItemsDelete.java
@@ -26,26 +26,11 @@ import org.apache.isis.applib.services.jdosupport.IsisJdoSupport;
 
 public class ToDoItemsDelete extends FixtureScript {
 
-    //region > ownedBy (optional)
-    private String ownedBy;
-
-    public String getOwnedBy() {
-        return ownedBy;
-    }
-
-    public void setOwnedBy(String ownedBy) {
-        this.ownedBy = ownedBy;
-    }
-    //endregion
-
     //region > execute
     protected void execute(ExecutionContext executionContext) {
-
         final String ownedBy = executionContext.getParameter("ownedBy");
-
         isisJdoSupport.executeUpdate("delete from ${symbol_escape}"ToDoItem${symbol_escape}" where ${symbol_escape}"ownedBy${symbol_escape}" = '" + ownedBy + "'");
     }
-
     //endregion
 
     //region > injected services

http://git-wip-us.apache.org/repos/asf/isis/blob/f76185de/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/scenarios/ToDoItemsRecreate.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/scenarios/ToDoItemsRecreate.java b/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/scenarios/ToDoItemsRecreate.java
index d7b758d..a1bb33f 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/scenarios/ToDoItemsRecreate.java
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/scenarios/ToDoItemsRecreate.java
@@ -65,20 +65,20 @@ public class ToDoItemsRecreate extends FixtureScript {
                 Util.coalesce(getOwnedBy(), getContainer().getUser().getName()));
 
         // prereqs
-        executeChild(new ToDoItemsDelete(), executionContext);
+        executionContext.executeChild(this, new ToDoItemsDelete());
 
         // create items
-        executeChild(new ToDoItemForBuyMilk(), executionContext);
-        executeChild(new ToDoItemForBuyBread(), executionContext);
-        executeChild(new ToDoItemForBuyStamps(), executionContext);
-        executeChild(new ToDoItemForPickUpLaundry(), executionContext);
-        executeChild(new ToDoItemForMowLawn(), executionContext);
-        executeChild(new ToDoItemForVacuumHouse(), executionContext);
-        executeChild(new ToDoItemForSharpenKnives(), executionContext);
-        executeChild(new ToDoItemForWriteToPenPal(), executionContext);
-        executeChild(new ToDoItemForWriteBlogPost(), executionContext);
-        executeChild(new ToDoItemForOrganizeBrownBag(), executionContext);
-        executeChild(new ToDoItemForSubmitConferenceSession(), executionContext);
-        executeChild(new ToDoItemForStageIsisRelease(), executionContext);
+        executionContext.executeChild(this, new ToDoItemForBuyMilk());
+        executionContext.executeChild(this, new ToDoItemForBuyBread());
+        executionContext.executeChild(this, new ToDoItemForBuyStamps());
+        executionContext.executeChild(this, new ToDoItemForPickUpLaundry());
+        executionContext.executeChild(this, new ToDoItemForMowLawn());
+        executionContext.executeChild(this, new ToDoItemForVacuumHouse());
+        executionContext.executeChild(this, new ToDoItemForSharpenKnives());
+        executionContext.executeChild(this, new ToDoItemForWriteToPenPal());
+        executionContext.executeChild(this, new ToDoItemForWriteBlogPost());
+        executionContext.executeChild(this, new ToDoItemForOrganizeBrownBag());
+        executionContext.executeChild(this, new ToDoItemForSubmitConferenceSession());
+        executionContext.executeChild(this, new ToDoItemForStageIsisRelease());
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/f76185de/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/scenarios/ToDoItemsRecreateAndCompleteSeveral.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/scenarios/ToDoItemsRecreateAndCompleteSeveral.java b/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/scenarios/ToDoItemsRecreateAndCompleteSeveral.java
index 7ae2d7f..3d790b7 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/scenarios/ToDoItemsRecreateAndCompleteSeveral.java
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/todo/scenarios/ToDoItemsRecreateAndCompleteSeveral.java
@@ -23,6 +23,19 @@ package fixture.todo.scenarios;
 
 import fixture.todo.items.actions.complete.ToDoItemCompleteForBuyStamps;
 import fixture.todo.items.actions.complete.ToDoItemCompleteForWriteBlogPost;
+import fixture.todo.items.create.ToDoItemForBuyBread;
+import fixture.todo.items.create.ToDoItemForBuyMilk;
+import fixture.todo.items.create.ToDoItemForBuyStamps;
+import fixture.todo.items.create.ToDoItemForMowLawn;
+import fixture.todo.items.create.ToDoItemForOrganizeBrownBag;
+import fixture.todo.items.create.ToDoItemForPickUpLaundry;
+import fixture.todo.items.create.ToDoItemForSharpenKnives;
+import fixture.todo.items.create.ToDoItemForStageIsisRelease;
+import fixture.todo.items.create.ToDoItemForSubmitConferenceSession;
+import fixture.todo.items.create.ToDoItemForVacuumHouse;
+import fixture.todo.items.create.ToDoItemForWriteBlogPost;
+import fixture.todo.items.create.ToDoItemForWriteToPenPal;
+import fixture.todo.items.delete.ToDoItemsDelete;
 import fixture.todo.util.Util;
 
 import org.apache.isis.applib.fixturescripts.FixtureScript;
@@ -53,11 +66,24 @@ public class ToDoItemsRecreateAndCompleteSeveral extends FixtureScript {
                 "ownedBy",
                 Util.coalesce(getOwnedBy(), getContainer().getUser().getName()));
 
-        // prereqs
-        executeChild(new ToDoItemsRecreate(), executionContext);
+        executionContext.executeChild(this, new ToDoItemsDelete());
+
+        // create items
+        executionContext.executeChild(this, new ToDoItemForBuyMilk());
+        executionContext.executeChild(this, new ToDoItemForBuyBread());
+        executionContext.executeChild(this, new ToDoItemForBuyStamps());
+        executionContext.executeChild(this, new ToDoItemForPickUpLaundry());
+        executionContext.executeChild(this, new ToDoItemForMowLawn());
+        executionContext.executeChild(this, new ToDoItemForVacuumHouse());
+        executionContext.executeChild(this, new ToDoItemForSharpenKnives());
+        executionContext.executeChild(this, new ToDoItemForWriteToPenPal());
+        executionContext.executeChild(this, new ToDoItemForWriteBlogPost());
+        executionContext.executeChild(this, new ToDoItemForOrganizeBrownBag());
+        executionContext.executeChild(this, new ToDoItemForSubmitConferenceSession());
+        executionContext.executeChild(this, new ToDoItemForStageIsisRelease());
 
         // this fixture
-        executeChild(new ToDoItemCompleteForBuyStamps(), executionContext);
-        executeChild(new ToDoItemCompleteForWriteBlogPost(), executionContext);
+        executionContext.executeChild(this, new ToDoItemCompleteForBuyStamps());
+        executionContext.executeChild(this, new ToDoItemCompleteForWriteBlogPost());
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/f76185de/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/ToDoItemContributionsIntegTest.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/ToDoItemContributionsIntegTest.java b/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/ToDoItemContributionsIntegTest.java
index 0725ca9..7440088 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/ToDoItemContributionsIntegTest.java
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/ToDoItemContributionsIntegTest.java
@@ -24,7 +24,7 @@ package integration.tests;
 import dom.todo.ToDoItem;
 import dom.todo.ToDoItemContributions;
 import dom.todo.ToDoItems;
-import fixture.todo.integtests.ToDoItemsIntegTestFixture;
+import fixture.todo.scenarios.ToDoItemsRecreateAndCompleteSeveral;
 
 import java.util.List;
 import javax.inject.Inject;
@@ -40,12 +40,12 @@ import static org.junit.Assert.assertThat;
 
 public abstract class ToDoItemContributionsIntegTest extends AbstractToDoIntegTest {
 
-    ToDoItemsIntegTestFixture fixture;
+    ToDoItemsRecreateAndCompleteSeveral fixtureScript;
 
     @Before
     public void setUpData() throws Exception {
-        // executing the fixtures directly allows us to look up the results later.
-        fixtureScripts.runFixtureScript(fixture = new ToDoItemsIntegTestFixture(), null);
+        fixtureScript = new ToDoItemsRecreateAndCompleteSeveral();
+        fixtureScripts.runFixtureScript(fixtureScript, null);
     }
 
     @Inject
@@ -61,7 +61,7 @@ public abstract class ToDoItemContributionsIntegTest extends AbstractToDoIntegTe
     @Before
     public void setUp() throws Exception {
 
-        toDoItem = wrap(fixture.lookup("integ-test/to-do-items-recreate-and-complete-several/to-do-item-complete-for-buy-stamps/item-1", ToDoItem.class));
+        toDoItem = wrap(fixtureScript.lookup("to-do-items-recreate-and-complete-several/to-do-item-complete-for-buy-stamps/item-1", ToDoItem.class));
         assertThat(toDoItem, is(not(nullValue())));
 
         toDoItemContributionsWrapped = wrap(toDoItemContributions);

http://git-wip-us.apache.org/repos/asf/isis/blob/f76185de/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/ToDoItemIntegTest.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/ToDoItemIntegTest.java b/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/ToDoItemIntegTest.java
index 54f2adf..b9091fb 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/ToDoItemIntegTest.java
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/integtests/src/test/java/integration/tests/ToDoItemIntegTest.java
@@ -24,7 +24,7 @@ package integration.tests;
 import dom.todo.ToDoItem;
 import dom.todo.ToDoItemSubscriptions;
 import dom.todo.ToDoItems;
-import fixture.todo.integtests.ToDoItemsIntegTestFixture;
+import fixture.todo.scenarios.ToDoItemsRecreateAndCompleteSeveral;
 
 import java.math.BigDecimal;
 import java.nio.charset.Charset;
@@ -64,12 +64,12 @@ import static org.junit.Assert.assertThat;
 
 public class ToDoItemIntegTest extends AbstractToDoIntegTest {
 
-    ToDoItemsIntegTestFixture fixture;
+    ToDoItemsRecreateAndCompleteSeveral fixtureScript;
 
     @Before
     public void setUpData() throws Exception {
-        // executing the fixtures directly allows us to look up the results later.
-        fixtureScripts.runFixtureScript(fixture = new ToDoItemsIntegTestFixture(), null);
+        fixtureScript = new ToDoItemsRecreateAndCompleteSeveral();
+        fixtureScripts.runFixtureScript(fixtureScript, null);
     }
 
     @Inject
@@ -103,7 +103,7 @@ public class ToDoItemIntegTest extends AbstractToDoIntegTest {
             final List<ToDoItem> all = wrap(toDoItems).notYetComplete();
             toDoItem = wrap(all.get(0));
 
-            toDoItem = wrap(fixture.lookup("integ-test/to-do-items-recreate-and-complete-several/to-do-items-recreate/to-do-item-for-buy-bread/item-1", ToDoItem.class));
+            toDoItem = wrap(fixtureScript.lookup("to-do-items-recreate-and-complete-several/to-do-item-for-buy-bread/item-1", ToDoItem.class));
             assertThat(toDoItem, is(not(nullValue())));
 
             nextTransaction();

http://git-wip-us.apache.org/repos/asf/isis/blob/f76185de/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/CustomMementoService.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/CustomMementoService.java b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/CustomMementoService.java
index 51f3db9..dc619cd 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/CustomMementoService.java
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/CustomMementoService.java
@@ -35,7 +35,7 @@ import org.apache.isis.core.runtime.services.memento.MementoServiceDefault;
  * <pre>
  *     isis.services = ${symbol_escape}
  *                     ...,
- *                     1:webapp.MyMementoService,
+ *                     1:webapp.CustomMementoService,
  *                     ...,
  * </pre>
  * <p>

http://git-wip-us.apache.org/repos/asf/isis/blob/f76185de/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/prototyping/ExternalLinksService.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/prototyping/ExternalLinksService.java b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/prototyping/ExternalLinksService.java
index a1edab5..828897c 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/prototyping/ExternalLinksService.java
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/prototyping/ExternalLinksService.java
@@ -25,11 +25,12 @@ import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.ActionSemantics;
 import org.apache.isis.applib.annotation.ActionSemantics.Of;
 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.ParameterLayout;
-import org.apache.isis.applib.annotation.Prototype;
 
-@DomainService(menuBar = DomainService.MenuBar.SECONDARY, menuOrder = "20")
+@DomainService
+@DomainServiceLayout(menuBar = DomainServiceLayout.MenuBar.SECONDARY, menuOrder = "20")
 public class ExternalLinksService {
 
     public static enum ExternalLink {

http://git-wip-us.apache.org/repos/asf/isis/blob/f76185de/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/prototyping/WicketDeveloperUtilities.java
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/prototyping/WicketDeveloperUtilities.java b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/prototyping/WicketDeveloperUtilities.java
index 5ef2093..40213a3 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/prototyping/WicketDeveloperUtilities.java
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/java/webapp/prototyping/WicketDeveloperUtilities.java
@@ -21,6 +21,7 @@ package webapp.prototyping;
 
 import org.apache.isis.applib.annotation.ActionLayout;
 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.viewer.wicket.viewer.applib.WicketDeveloperUtilitiesService;
 
@@ -28,7 +29,8 @@ import org.apache.isis.viewer.wicket.viewer.applib.WicketDeveloperUtilitiesServi
  * These overrides are simply to 'move' the action underneath the 
  * 'Prototyping' menu.
  */
-@DomainService(menuBar = DomainService.MenuBar.SECONDARY, menuOrder = "40")
+@DomainService
+@DomainServiceLayout(menuBar = DomainServiceLayout.MenuBar.SECONDARY, menuOrder = "40")
 public class WicketDeveloperUtilities extends WicketDeveloperUtilitiesService {
 
     @ActionLayout(named="Clear i18n Cache")

http://git-wip-us.apache.org/repos/asf/isis/blob/f76185de/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/isis.properties
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/isis.properties b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/isis.properties
index dfcbaf3..b4942ff 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/isis.properties
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/isis.properties
@@ -24,7 +24,7 @@ ${symbol_pound}
 ${symbol_pound} specify system components.
 ${symbol_pound}
 ${symbol_pound} The values correspond to the named components in the installer-registry.properties file
-${symbol_pound} in the org.apache.isis.runtimes.dflt:runtime JAR (in the org.apache.isis.runtimes.dflt.runtime package)
+${symbol_pound} in the org.apache.isis.core:isis-core-runtime JAR (in the org.apache.isis.core.runtime package)
 ${symbol_pound}
 ${symbol_pound} Although all configuration could reside in isis.properties, the recommendation is
 ${symbol_pound} to split out into component specific files:
@@ -35,11 +35,7 @@ ${symbol_pound} where
 ${symbol_pound}    * xxx is the component type, and
 ${symbol_pound}    * yyy is the component name.
 ${symbol_pound}
-${symbol_pound} For example, persistor_sql.properties holds configuration information specific to the
-${symbol_pound}
-${symbol_pound}
-${symbol_pound} If the components are changed, also remember to edit pom.xml (further comments can be 
-${symbol_pound} found in the persistor_xxx.properties files)
+${symbol_pound} For example, viewer_wicket.properties holds configuration information specific to the Wicket viewer.
 ${symbol_pound}
 ${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbo
 l_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}
 
@@ -99,6 +95,14 @@ ${symbol_pound}isis.reflector.validator=
 
 
 ${symbol_pound}
+${symbol_pound} layoutMetadataReader(s)
+${symbol_pound}
+
+${symbol_pound} isis.reflector.layoutMetadataReaders=org.apache.isis.core.metamodel.layoutmetadata.json.LayoutMetadataReaderFromJson
+
+
+
+${symbol_pound}
 ${symbol_pound} patterns for applying CssClassFa facet (font-awesome icons) to member names
 ${symbol_pound}
 isis.reflector.facet.cssClassFa.patterns=${symbol_escape}
@@ -194,7 +198,7 @@ ${symbol_pound} Fixtures are used to seed the object store with an initial set o
 ${symbol_pound} in-memory object store, the fixtures are installed on every run.  For other
 ${symbol_pound} object stores, they are used only when the object store is first initialized.
 ${symbol_pound}
-isis.fixtures=fixture.todo.scenarios.ToDoItemsRecreateForSven
+${symbol_pound}isis.fixtures=fixture.todo.scenarios.ToDoItemsRecreateForSven
 
 
 ${symbol_pound}

http://git-wip-us.apache.org/repos/asf/isis/blob/f76185de/example/archetype/todoapp/src/test/resources/projects/basic/archetype.properties
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/test/resources/projects/basic/archetype.properties b/example/archetype/todoapp/src/test/resources/projects/basic/archetype.properties
index 9d6cbff..038d8a8 100644
--- a/example/archetype/todoapp/src/test/resources/projects/basic/archetype.properties
+++ b/example/archetype/todoapp/src/test/resources/projects/basic/archetype.properties
@@ -1,4 +1,4 @@
-#Fri Dec 05 11:57:56 GMT 2014
+#Wed Dec 17 18:14:56 GMT 2014
 package=it.pkg
 version=0.1-SNAPSHOT
 groupId=archetype.it


[3/4] isis git commit: ISIS-928: recreating simpleapp archetype

Posted by da...@apache.org.
ISIS-928: recreating simpleapp archetype


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

Branch: refs/heads/master
Commit: 857e35632a6a93d495f41fa94bc55756f57e9278
Parents: 6ef5a7d
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Wed Dec 17 18:14:49 2014 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Wed Dec 17 18:14:49 2014 +0000

----------------------------------------------------------------------
 .../resources/archetype-resources/dom/pom.xml   | 32 ++++++++++++++++++++
 .../simple/SimpleObjectsFixturesService.java    |  6 ++--
 .../simple/objects/SimpleObjectAbstract.java    |  2 +-
 .../simple/scenario/SimpleObjectsFixture.java   |  8 ++---
 .../src/main/webapp/WEB-INF/isis.properties     | 16 ++++++----
 .../projects/basic/archetype.properties         |  2 +-
 6 files changed, 51 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/857e3563/example/archetype/simpleapp/src/main/resources/archetype-resources/dom/pom.xml
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/dom/pom.xml b/example/archetype/simpleapp/src/main/resources/archetype-resources/dom/pom.xml
index 5ab3e8b..6a10ffe 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/dom/pom.xml
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/dom/pom.xml
@@ -45,6 +45,38 @@
         </resources>
         <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>
+            <plugin>
                 <groupId>org.datanucleus</groupId>
                 <artifactId>datanucleus-maven-plugin</artifactId>
                 <version>${datanucleus-maven-plugin.version}</version>

http://git-wip-us.apache.org/repos/asf/isis/blob/857e3563/example/archetype/simpleapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/simple/SimpleObjectsFixturesService.java
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/simple/SimpleObjectsFixturesService.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/simple/SimpleObjectsFixturesService.java
index f7f1813..22c1f7d 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/simple/SimpleObjectsFixturesService.java
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/simple/SimpleObjectsFixturesService.java
@@ -24,8 +24,8 @@ package fixture.simple;
 import fixture.simple.scenario.SimpleObjectsFixture;
 
 import java.util.List;
-import org.apache.isis.applib.annotation.ClassLayout;
 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.Prototype;
 import org.apache.isis.applib.fixturescripts.FixtureResult;
@@ -36,8 +36,8 @@ import org.apache.isis.applib.fixturescripts.SimpleFixtureScript;
 /**
  * Enables fixtures to be installed from the application.
  */
-@ClassLayout(named="Prototyping")
-@DomainService(menuBar= DomainService.MenuBar.SECONDARY, menuOrder = "20")
+@DomainService
+@DomainServiceLayout(named="Prototyping", menuBar = DomainServiceLayout.MenuBar.SECONDARY, menuOrder = "20")
 public class SimpleObjectsFixturesService extends FixtureScripts {
 
     public SimpleObjectsFixturesService() {

http://git-wip-us.apache.org/repos/asf/isis/blob/857e3563/example/archetype/simpleapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/simple/objects/SimpleObjectAbstract.java
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/simple/objects/SimpleObjectAbstract.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/simple/objects/SimpleObjectAbstract.java
index 8f282ec..2aadd16 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/simple/objects/SimpleObjectAbstract.java
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/simple/objects/SimpleObjectAbstract.java
@@ -30,7 +30,7 @@ import org.apache.isis.applib.fixturescripts.FixtureScript;
 public abstract class SimpleObjectAbstract extends FixtureScript {
 
     protected SimpleObject create(final String name, ExecutionContext executionContext) {
-        return executionContext.add(this, simpleObjects.create(name));
+        return executionContext.addResult(this, simpleObjects.create(name));
     }
 
     @javax.inject.Inject

http://git-wip-us.apache.org/repos/asf/isis/blob/857e3563/example/archetype/simpleapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/simple/scenario/SimpleObjectsFixture.java
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/simple/scenario/SimpleObjectsFixture.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/simple/scenario/SimpleObjectsFixture.java
index f067114..f2936e0 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/simple/scenario/SimpleObjectsFixture.java
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/fixture/src/main/java/fixture/simple/scenario/SimpleObjectsFixture.java
@@ -38,11 +38,11 @@ public class SimpleObjectsFixture extends FixtureScript {
     @Override
     protected void execute(ExecutionContext executionContext) {
 
-        executeChild(new SimpleObjectsTearDownFixture(), executionContext);
+        executionContext.executeChild(this, new SimpleObjectsTearDownFixture());
 
-        executeChild(new SimpleObjectForFoo(), executionContext);
-        executeChild(new SimpleObjectForBar(), executionContext);
-        executeChild(new SimpleObjectForBaz(), executionContext);
+        executionContext.executeChild(this, new SimpleObjectForFoo());
+        executionContext.executeChild(this, new SimpleObjectForBar());
+        executionContext.executeChild(this, new SimpleObjectForBaz());
     }
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/857e3563/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/isis.properties
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/isis.properties b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/isis.properties
index eae9e91..bf63c40 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/isis.properties
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/isis.properties
@@ -24,7 +24,7 @@ ${symbol_pound}
 ${symbol_pound} specify system components.
 ${symbol_pound}
 ${symbol_pound} The values correspond to the named components in the installer-registry.properties file
-${symbol_pound} in the org.apache.isis.runtimes.dflt:runtime JAR (in the org.apache.isis.runtimes.dflt.runtime package)
+${symbol_pound} in the org.apache.isis.core:isis-core-runtime JAR (in the org.apache.isis.core.runtime package)
 ${symbol_pound}
 ${symbol_pound} Although all configuration could reside in isis.properties, the recommendation is
 ${symbol_pound} to split out into component specific files:
@@ -35,11 +35,7 @@ ${symbol_pound} where
 ${symbol_pound}    * xxx is the component type, and
 ${symbol_pound}    * yyy is the component name.
 ${symbol_pound}
-${symbol_pound} For example, persistor_sql.properties holds configuration information specific to the
-${symbol_pound}
-${symbol_pound}
-${symbol_pound} If the components are changed, also remember to edit pom.xml (further comments can be 
-${symbol_pound} found in the persistor_xxx.properties files)
+${symbol_pound} For example, viewer_wicket.properties holds configuration information specific to the Wicket viewer.
 ${symbol_pound}
 ${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbo
 l_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}
 
@@ -99,6 +95,14 @@ ${symbol_pound}isis.reflector.validator=
 
 
 ${symbol_pound}
+${symbol_pound} layoutMetadataReader(s)
+${symbol_pound}
+
+${symbol_pound} isis.reflector.layoutMetadataReaders=org.apache.isis.core.metamodel.layoutmetadata.json.LayoutMetadataReaderFromJson
+
+
+
+${symbol_pound}
 ${symbol_pound} patterns for applying CssClassFa facet (font-awesome icons) to member names
 ${symbol_pound}
 isis.reflector.facet.cssClassFa.patterns=${symbol_escape}

http://git-wip-us.apache.org/repos/asf/isis/blob/857e3563/example/archetype/simpleapp/src/test/resources/projects/basic/archetype.properties
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/test/resources/projects/basic/archetype.properties b/example/archetype/simpleapp/src/test/resources/projects/basic/archetype.properties
index 5957bd5..cc2c384 100644
--- a/example/archetype/simpleapp/src/test/resources/projects/basic/archetype.properties
+++ b/example/archetype/simpleapp/src/test/resources/projects/basic/archetype.properties
@@ -1,4 +1,4 @@
-#Fri Dec 05 11:55:17 GMT 2014
+#Wed Dec 17 18:14:43 GMT 2014
 package=it.pkg
 version=0.1-SNAPSHOT
 groupId=archetype.it