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 2018/01/04 19:23:46 UTC

[isis] 08/10: ISIS-1465: recreating helloworld archetype

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

danhaywood pushed a commit to branch release-1.16.0-RC1
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 2a0b21fe5f1981c938b90879d2008b402d7b13c6
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Jan 4 19:13:55 2018 +0000

    ISIS-1465: recreating helloworld archetype
---
 example/archetype/helloworld/pom.xml               |   7 +-
 .../src/main/resources/archetype-resources/pom.xml |  76 +++++++++++---
 .../application/HelloWorldAppManifest.java         |   8 +-
 ...sis.properties => isis-non-changing.properties} |  10 +-
 .../java/domainapp/application/menubars.layout.xml | 112 +++++++++++++++++++++
 .../main/java/domainapp/dom/HelloWorldModule.java  |   6 +-
 .../java/domainapp/dom/impl/HelloWorldObject.java  |  41 ++++----
 .../java/domainapp/dom/impl/HelloWorldObjects.java |  24 ++---
 .../src/main/webapp/WEB-INF/isis.properties        |  22 ++--
 .../src/main/webapp/WEB-INF/logging.properties     |  28 ++++--
 .../src/main/webapp/about/index.html               |   2 +-
 .../src/main/webapp/swagger-ui/index.html          |   6 +-
 .../dom/impl/HelloWorldObjectTest_delete.java      |   2 +-
 .../dom/impl/HelloWorldObjectTest_updateName.java  |   2 +-
 .../resources/projects/basic/archetype.properties  |   2 +-
 15 files changed, 262 insertions(+), 86 deletions(-)

diff --git a/example/archetype/helloworld/pom.xml b/example/archetype/helloworld/pom.xml
index f10a2c3..a978be8 100644
--- a/example/archetype/helloworld/pom.xml
+++ b/example/archetype/helloworld/pom.xml
@@ -17,7 +17,7 @@
   specific language governing permissions and limitations
   under the License.
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.apache.isis.archetype</groupId>
     <artifactId>helloworld-archetype</artifactId>
@@ -65,12 +65,11 @@
         <connection>scm:git:git@github.com:incodehq/incode-build.git/helloworld</connection>
         <developerConnection>scm:git:git@github.com:incodehq/incode-build.git/helloworld</developerConnection>
         <url>git@github.com:incodehq/incode-build.git/helloworld</url>
-      <tag>HEAD</tag>
-  </scm>
+    </scm>
     <parent>
         <groupId>org.apache.isis.core</groupId>
         <artifactId>isis</artifactId>
-        <version>1.15.1</version>
+        <version>1.16.0</version>
         <relativePath>../../../core/pom.xml</relativePath>
     </parent>
     <properties>
diff --git a/example/archetype/helloworld/src/main/resources/archetype-resources/pom.xml b/example/archetype/helloworld/src/main/resources/archetype-resources/pom.xml
index c11f281..d1a1371 100644
--- a/example/archetype/helloworld/src/main/resources/archetype-resources/pom.xml
+++ b/example/archetype/helloworld/src/main/resources/archetype-resources/pom.xml
@@ -34,9 +34,7 @@
     <packaging>war</packaging>
 
     <properties>
-        <isis.version>1.15.1</isis.version>
-
-        <lombok.version>1.16.18</lombok.version>
+        <isis.version>1.16.0</isis.version>
 
         <compiler-plugin.source>1.8</compiler-plugin.source>
         <compiler-plugin.target>1.8</compiler-plugin.target>
@@ -44,7 +42,7 @@
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
 
-        <maven-war-plugin.warName>${project.parent.artifactId}</maven-war-plugin.warName>
+        <maven-war-plugin.warName>${project.artifactId}</maven-war-plugin.warName>
     </properties>
 
     <build>
@@ -89,6 +87,52 @@
         </plugins>
     </build>
 
+    <repositories>
+        <repository>
+            <id>apache.snapshots</id>
+            <name>Apache Snapshots</name>
+            <url>https://repository.apache.org/content/repositories/snapshots/</url>
+            <releases>
+                <enabled>false</enabled>
+            </releases>
+            <snapshots>
+            </snapshots>
+        </repository>
+        <repository>
+            <id>cloudbees.estatio.snapshots</id>
+            <url>http://repository-estatio.forge.cloudbees.com/snapshot/</url>
+            <name>CloudBees Snapshots (and Interim Releases)</name>
+            <releases>
+                <updatePolicy>never</updatePolicy>
+                <checksumPolicy>fail</checksumPolicy>
+            </releases>
+            <snapshots>
+                <updatePolicy>never</updatePolicy>
+                <checksumPolicy>fail</checksumPolicy>
+            </snapshots>
+            <layout>default</layout>
+        </repository>
+        <repository>
+            <id>sonatype-snapshots</id>
+            <url>https://oss.sonatype.org/content/repositories/snapshots</url>
+            <snapshots>
+            </snapshots>
+        </repository>
+    </repositories>
+
+    <pluginRepositories>
+        <pluginRepository>
+            <id>cloudbees.estatio.snapshots</id>
+            <name>CloudBees Snapshots (and Interim Releases)</name>
+            <releases>
+                <updatePolicy>never</updatePolicy>
+                <checksumPolicy>fail</checksumPolicy>
+            </releases>
+            <url>http://repository-estatio.forge.cloudbees.com/snapshot/</url>
+            <layout>default</layout>
+        </pluginRepository>
+    </pluginRepositories>
+
     <dependencyManagement>
         <dependencies>
             <dependency>
@@ -114,11 +158,6 @@
         </dependency>
         <dependency>
             <groupId>org.apache.isis.mavendeps</groupId>
-            <artifactId>isis-mavendeps-intellij</artifactId>
-            <type>pom</type>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.isis.mavendeps</groupId>
             <artifactId>isis-mavendeps-testing</artifactId>
             <scope>test</scope>
             <type>pom</type>
@@ -129,12 +168,6 @@
             <artifactId>hsqldb</artifactId>
         </dependency>
 
-        <dependency>
-            <groupId>org.projectlombok</groupId>
-            <artifactId>lombok</artifactId>
-            <version>${lombok.version}</version>
-            <scope>provided</scope>
-        </dependency>
     </dependencies>
 
     <profiles>
@@ -147,7 +180,18 @@
             </activation>
             <build>
                 <directory>target-ide</directory>
-            </build>
+		        <plugins>
+		        	<!-- eclipse doesn't seem to support maven mixins config, so repeat here -->
+					<plugin>
+						<artifactId>maven-compiler-plugin</artifactId>
+						<configuration>
+							<source>${compiler-plugin.source}</source>
+							<target>${compiler-plugin.target}</target>
+							<compilerArgument />
+						</configuration>
+					</plugin>
+		        </plugins>
+		    </build>
         </profile>
     </profiles>
 
diff --git a/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/application/HelloWorldAppManifest.java b/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/application/HelloWorldAppManifest.java
index a594a3a..b9c28c7 100644
--- a/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/application/HelloWorldAppManifest.java
+++ b/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/application/HelloWorldAppManifest.java
@@ -21,18 +21,18 @@
  */
 package domainapp.application;
 
-import org.apache.isis.applib.AppManifestAbstract;
+import org.apache.isis.applib.AppManifestAbstract2;
 
 import domainapp.dom.HelloWorldModule;
 
 /**
  * Bootstrap the application.
  */
-public class HelloWorldAppManifest extends AppManifestAbstract {
+public class HelloWorldAppManifest extends AppManifestAbstract2 {
 
     public static final Builder BUILDER = Builder
-            .forModules(HelloWorldModule.class)
-            .withConfigurationPropertiesFile(HelloWorldAppManifest.class, "isis.properties")
+            .forModule(new HelloWorldModule())
+            .withConfigurationPropertiesFile(HelloWorldAppManifest.class, "isis-non-changing.properties")
             .withAuthMechanism("shiro");
 
     public HelloWorldAppManifest() {
diff --git a/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/application/isis.properties b/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/application/isis-non-changing.properties
similarity index 85%
rename from example/archetype/helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/application/isis.properties
rename to example/archetype/helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/application/isis-non-changing.properties
index 2d1507f..5cb1658 100644
--- a/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/application/isis.properties
+++ b/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/application/isis-non-changing.properties
@@ -19,7 +19,9 @@ ${symbol_pound}  specific language governing permissions and limitations
 ${symbol_pound}  under the License.
 
 
-isis.appManifest=domainapp.application.HelloWorldAppManifest
+
+${symbol_pound}isis.services.eventbus.implementation=guava
+isis.services.eventbus.implementation=axon
 
 isis.reflector.validator.allowDeprecated=false
 isis.reflector.validator.noParamsOnly=true
@@ -27,6 +29,9 @@ isis.reflector.validator.explicitObjectType=true
 isis.reflector.validator.serviceActionsOnly=true
 isis.reflector.validator.mixinsOnly=true
 
+${symbol_pound}isis.reflector.facet.domainObjectLayoutAnnotation.titleUiEvent.postForDefault=true
+${symbol_pound}isis.reflector.facet.domainObjectLayoutAnnotation.iconUiEvent.postForDefault=true
+${symbol_pound}isis.reflector.facet.domainObjectLayoutAnnotation.cssClassUiEvent.postForDefault=true
 
 isis.reflector.facet.cssClassFa.patterns=${symbol_escape}
                         new.*:fa-plus,${symbol_escape}
@@ -40,8 +45,9 @@ isis.reflector.facet.cssClassFa.patterns=${symbol_escape}
 isis.reflector.facet.cssClass.patterns=${symbol_escape}
                         delete.*:btn-danger
 
-isis.objects.editing=false
+isis.reflector.explicitAnnotations.action=true
 
+isis.objects.editing=false
 
 isis.viewer.wicket.maxTitleLengthInStandaloneTables=0
 isis.viewer.wicket.maxTitleLengthInParentedTables=0
diff --git a/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/application/menubars.layout.xml b/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/application/menubars.layout.xml
new file mode 100644
index 0000000..d81fde6
--- /dev/null
+++ b/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/application/menubars.layout.xml
@@ -0,0 +1,112 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+  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.
+-->
+<mb3:menuBars xsi:schemaLocation="http://isis.apache.org/applib/layout/menubars/bootstrap3 http://isis.apache.org/applib/layout/menubars/bootstrap3/menubars.xsd http://isis.apache.org/applib/layout/component http://isis.apache.org/applib/layout/component/component.xsd http://isis.apache.org/applib/layout/links http://isis.apache.org/applib/layout/links/links.xsd" xmlns:cpt="http://isis.apache.org/applib/layout/component" xmlns:lnk="http://isis.apache.org/applib/layout/links" xmlns:mb3="h [...]
+    <mb3:primary>
+        <mb3:menu>
+            <mb3:named>Hello World Objects</mb3:named>
+            <mb3:section>
+                <mb3:serviceAction objectType="${artifactId}.HelloWorldObjects" id="create">
+                    <cpt:named>Create</cpt:named>
+                </mb3:serviceAction>
+                <mb3:serviceAction objectType="${artifactId}.HelloWorldObjects" id="findByName">
+                    <cpt:named>Find By Name</cpt:named>
+                </mb3:serviceAction>
+                <mb3:serviceAction objectType="${artifactId}.HelloWorldObjects" id="listAll">
+                    <cpt:named>List All</cpt:named>
+                </mb3:serviceAction>
+            </mb3:section>
+        </mb3:menu>
+        <mb3:menu unreferencedActions="true">
+            <mb3:named>Other</mb3:named>
+        </mb3:menu>
+    </mb3:primary>
+    <mb3:secondary>
+        <mb3:menu>
+            <mb3:named>Prototyping</mb3:named>
+            <mb3:section>
+                <mb3:serviceAction objectType="isisApplib.FixtureScriptsDefault" id="runFixtureScript">
+                    <cpt:named>Run Fixture Script</cpt:named>
+                </mb3:serviceAction>
+                <mb3:serviceAction objectType="isisApplib.FixtureScriptsDefault" id="runFixtureScriptWithAutoComplete">
+                    <cpt:named>Run Fixture Script</cpt:named>
+                </mb3:serviceAction>
+                <mb3:serviceAction objectType="isisApplib.FixtureScriptsDefault" id="recreateObjectsAndReturnFirst">
+                    <cpt:named>Recreate Objects And Return First</cpt:named>
+                </mb3:serviceAction>
+            </mb3:section>
+            <mb3:section>
+                <mb3:serviceAction objectType="isisApplib.LayoutServiceMenu" id="downloadLayouts">
+                    <cpt:named>Download Object Layouts (ZIP)</cpt:named>
+                </mb3:serviceAction>
+                <mb3:serviceAction objectType="isisApplib.LayoutServiceMenu" id="downloadMenuBarsLayout">
+                    <cpt:named>Download Menu Bars Layout (XML)</cpt:named>
+                </mb3:serviceAction>
+            </mb3:section>
+            <mb3:section>
+                <mb3:serviceAction objectType="isisApplib.MetaModelServicesMenu" id="downloadMetaModel">
+                    <cpt:named>Download Meta Model (CSV)</cpt:named>
+                </mb3:serviceAction>
+            </mb3:section>
+            <mb3:section>
+                <mb3:serviceAction objectType="isisApplib.SwaggerServiceMenu" id="openSwaggerUi">
+                    <cpt:named>Open Swagger Ui</cpt:named>
+                </mb3:serviceAction>
+                <mb3:serviceAction objectType="isisApplib.SwaggerServiceMenu" id="openRestApi">
+                    <cpt:named>Open Rest Api</cpt:named>
+                </mb3:serviceAction>
+                <mb3:serviceAction objectType="isisApplib.SwaggerServiceMenu" id="downloadSwaggerSchemaDefinition">
+                    <cpt:named>Download Swagger Schema Definition</cpt:named>
+                </mb3:serviceAction>
+            </mb3:section>
+            <mb3:section>
+                <mb3:serviceAction objectType="isisApplib.TranslationServicePoMenu" id="downloadTranslations">
+                    <cpt:named>Download Translations</cpt:named>
+                </mb3:serviceAction>
+                <mb3:serviceAction objectType="isisApplib.TranslationServicePoMenu" id="resetTranslationCache">
+                    <cpt:named>Clear translation cache</cpt:named>
+                </mb3:serviceAction>
+                <mb3:serviceAction objectType="isisApplib.TranslationServicePoMenu" id="switchToReadingTranslations">
+                    <cpt:named>Switch To Reading Translations</cpt:named>
+                </mb3:serviceAction>
+                <mb3:serviceAction objectType="isisApplib.TranslationServicePoMenu" id="switchToWritingTranslations">
+                    <cpt:named>Switch To Writing Translations</cpt:named>
+                </mb3:serviceAction>
+            </mb3:section>
+            <mb3:section>
+                <mb3:serviceAction objectType="isisApplib.HsqlDbManagerMenu" id="hsqlDbManager">
+                    <cpt:named>HSQL DB Manager</cpt:named>
+                </mb3:serviceAction>
+            </mb3:section>
+        </mb3:menu>
+    </mb3:secondary>
+    <mb3:tertiary>
+        <mb3:menu>
+            <mb3:named>Configuration Service Menu</mb3:named>
+            <mb3:section>
+                <mb3:serviceAction objectType="isisApplib.ConfigurationServiceMenu" id="configuration">
+                    <cpt:named>Configuration</cpt:named>
+                </mb3:serviceAction>
+            </mb3:section>
+        </mb3:menu>
+    </mb3:tertiary>
+</mb3:menuBars>
diff --git a/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/dom/HelloWorldModule.java b/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/dom/HelloWorldModule.java
index 04bee0c..80257f7 100644
--- a/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/dom/HelloWorldModule.java
+++ b/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/dom/HelloWorldModule.java
@@ -21,6 +21,8 @@
  */
 package domainapp.dom;
 
-public final class HelloWorldModule {
-    private HelloWorldModule(){}
+import org.apache.isis.applib.ModuleAbstract;
+
+public class HelloWorldModule extends ModuleAbstract {
+
 }
diff --git a/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/dom/impl/HelloWorldObject.java b/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/dom/impl/HelloWorldObject.java
index 6d7850c..6217c1f 100644
--- a/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/dom/impl/HelloWorldObject.java
+++ b/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/dom/impl/HelloWorldObject.java
@@ -25,7 +25,7 @@ import javax.jdo.annotations.IdGeneratorStrategy;
 import javax.jdo.annotations.IdentityType;
 import javax.jdo.annotations.VersionStrategy;
 
-import com.google.common.collect.Ordering;
+import com.google.common.collect.ComparisonChain;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.Auditing;
@@ -43,36 +43,30 @@ import org.apache.isis.applib.services.message.MessageService;
 import org.apache.isis.applib.services.repository.RepositoryService;
 import org.apache.isis.applib.services.title.TitleService;
 
-import lombok.AccessLevel;
-
 @javax.jdo.annotations.PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "${artifactId}" )
 @javax.jdo.annotations.DatastoreIdentity(strategy = IdGeneratorStrategy.IDENTITY, column = "id")
 @javax.jdo.annotations.Version(strategy= VersionStrategy.DATE_TIME, column ="version")
-@javax.jdo.annotations.Queries({
-        @javax.jdo.annotations.Query(
-                name = "findByName",
-                value = "SELECT "
-                        + "FROM domainapp.dom.impl.HelloWorldObject "
-                        + "WHERE name.indexOf(:name) >= 0 ")
-})
 @javax.jdo.annotations.Unique(name="HelloWorldObject_name_UNQ", members = {"name"})
 @DomainObject(auditing = Auditing.ENABLED)
-@DomainObjectLayout()  // trigger events etc.
-@lombok.RequiredArgsConstructor(staticName = "create")
-@lombok.Getter @lombok.Setter
+@DomainObjectLayout()  // causes UI events to be triggered
 public class HelloWorldObject implements Comparable<HelloWorldObject> {
 
+    public HelloWorldObject(final String name) {
+        this.name = name;
+    }
 
     @javax.jdo.annotations.Column(allowsNull = "false", length = 40)
-    @lombok.NonNull
     @Property(editing = Editing.DISABLED)
     @Title(prepend = "Object: ")
     private String name;
-
+    public String getName() { return name; }
+    public void setName(final String name) { this.name = name; }
 
     @javax.jdo.annotations.Column(allowsNull = "true", length = 4000)
     @Property(editing = Editing.ENABLED)
     private String notes;
+    public String getNotes() { return notes; }
+    public void setNotes(final String notes) { this.notes = notes; }
 
 
     @Action(semantics = SemanticsOf.IDEMPOTENT, command = CommandReification.ENABLED, publishing = Publishing.ENABLED)
@@ -83,7 +77,6 @@ public class HelloWorldObject implements Comparable<HelloWorldObject> {
         setName(name);
         return this;
     }
-
     public String default0UpdateName() {
         return getName();
     }
@@ -96,25 +89,29 @@ public class HelloWorldObject implements Comparable<HelloWorldObject> {
         repositoryService.removeAndFlush(this);
     }
 
+    @Override
+    public String toString() {
+        return getName();
+    }
 
     @Override
     public int compareTo(final HelloWorldObject other) {
-        return Ordering.natural().onResultOf(HelloWorldObject::getName).compare(this, other);
+        return ComparisonChain.start()
+                .compare(this.getName(), other.getName())
+                .result();
     }
 
 
-    //region > injected services
+    @javax.jdo.annotations.NotPersistent
     @javax.inject.Inject
-    @lombok.Getter(AccessLevel.NONE) @lombok.Setter(AccessLevel.NONE)
     RepositoryService repositoryService;
 
+    @javax.jdo.annotations.NotPersistent
     @javax.inject.Inject
-    @lombok.Getter(AccessLevel.NONE) @lombok.Setter(AccessLevel.NONE)
     TitleService titleService;
 
+    @javax.jdo.annotations.NotPersistent
     @javax.inject.Inject
-    @lombok.Getter(AccessLevel.NONE) @lombok.Setter(AccessLevel.NONE)
     MessageService messageService;
-    //endregion
 
 }
\ No newline at end of file
diff --git a/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/dom/impl/HelloWorldObjects.java b/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/dom/impl/HelloWorldObjects.java
index b27729a..24da58a 100644
--- a/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/dom/impl/HelloWorldObjects.java
+++ b/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/dom/impl/HelloWorldObjects.java
@@ -23,6 +23,8 @@ package domainapp.dom.impl;
 
 import java.util.List;
 
+import org.datanucleus.query.typesafe.TypesafeQuery;
+
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.MemberOrder;
@@ -31,8 +33,7 @@ import org.apache.isis.applib.annotation.Parameter;
 import org.apache.isis.applib.annotation.ParameterLayout;
 import org.apache.isis.applib.annotation.RestrictTo;
 import org.apache.isis.applib.annotation.SemanticsOf;
-import org.apache.isis.applib.query.QueryDefault;
-import org.apache.isis.applib.services.registry.ServiceRegistry2;
+import org.apache.isis.applib.services.jdosupport.IsisJdoSupport;
 import org.apache.isis.applib.services.repository.RepositoryService;
 
 @DomainService(
@@ -47,17 +48,19 @@ public class HelloWorldObjects {
             @Parameter(maxLength = 40)
             @ParameterLayout(named = "Name")
             final String name) {
-        return repositoryService.persist(HelloWorldObject.create(name));
+        return repositoryService.persist(new HelloWorldObject(name));
     }
 
     @Action(semantics = SemanticsOf.SAFE)
     @MemberOrder(sequence = "2")
     public List<HelloWorldObject> findByName(final String name) {
-        return repositoryService.allMatches(
-                new QueryDefault<>(
-                        HelloWorldObject.class,
-                        "findByName",
-                        "name", name));
+        TypesafeQuery<HelloWorldObject> q = isisJdoSupport.newTypesafeQuery(HelloWorldObject.class);
+        final QHelloWorldObject cand = QHelloWorldObject.candidate();
+        q = q.filter(
+                cand.name.indexOf(q.stringParameter("name")).ne(-1)
+        );
+        return q.setParameter("name", name)
+                .executeList();
     }
 
     @Action(semantics = SemanticsOf.SAFE, restrictTo = RestrictTo.PROTOTYPING)
@@ -66,13 +69,10 @@ public class HelloWorldObjects {
         return repositoryService.allInstances(HelloWorldObject.class);
     }
 
-
-    //region > injected services
     @javax.inject.Inject
     RepositoryService repositoryService;
 
     @javax.inject.Inject
-    ServiceRegistry2 serviceRegistry;
-    //endregion
+    IsisJdoSupport isisJdoSupport;
 
 }
diff --git a/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/isis.properties b/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/isis.properties
index 111f5ce..51c4ee2 100644
--- a/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/isis.properties
+++ b/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/isis.properties
@@ -19,21 +19,31 @@ ${symbol_pound}  specific language governing permissions and limitations
 ${symbol_pound}  under the License.
 
 
-
-
+${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_pou [...]
 ${symbol_pound}
-${symbol_pound} Specify the modules (= entities + services) and other components that make up
-${symbol_pound} this application.
+${symbol_pound} AppManifest specifies the modules, system components and fixtures of the app
 ${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_pou [...]
+
 
 isis.appManifest=domainapp.application.HelloWorldAppManifest
 
 
 
-${symbol_pound}isis.services.eventbus.implementation=guava
-isis.services.eventbus.implementation=axon
+${symbol_pound}
+${symbol_pound} The properties listed in this file vary between dev/test/prod.
+${symbol_pound} All remaining properties (which are static and don't vary between dev/test/prod)
+${symbol_pound} are loaded in programmatically by the AppManifest, see isis-non-changing.properties
+${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_pou [...]
+${symbol_pound}
+${symbol_pound} JDBC connection details
+${symbol_pound} (also update the pom.xml to reference the appropriate JDBC driver)
+${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_pou [...]
 
 isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionDriverName=org.hsqldb.jdbcDriver
 isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionURL=jdbc:hsqldb:mem:test
diff --git a/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/logging.properties b/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/logging.properties
index ae3070e..c2ca289 100644
--- a/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/logging.properties
+++ b/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/logging.properties
@@ -47,11 +47,17 @@ log4j.appender.File.append=false
 log4j.appender.File.layout=org.apache.log4j.PatternLayout
 log4j.appender.File.layout.ConversionPattern=%d [%-20c{1} %-10t %-5p]  %m%n
 
-log4j.appender.sql=org.apache.log4j.RollingFileAppender
-log4j.appender.sql.File=./logs/sql.log
-log4j.appender.sql.Append=false
-log4j.appender.sql.layout=org.apache.log4j.PatternLayout
-log4j.appender.sql.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} %m%n
+log4j.appender.sql-dml=org.apache.log4j.RollingFileAppender
+log4j.appender.sql-dml.File=./logs/sql-dml.log
+log4j.appender.sql-dml.Append=false
+log4j.appender.sql-dml.layout=org.apache.log4j.PatternLayout
+log4j.appender.sql-dml.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} %m%n
+
+log4j.appender.sql-ddl=org.apache.log4j.RollingFileAppender
+log4j.appender.sql-ddl.File=./logs/sql-ddl.log
+log4j.appender.sql-ddl.Append=false
+log4j.appender.sql-ddl.layout=org.apache.log4j.PatternLayout
+log4j.appender.sql-ddl.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} %m%n
 
 log4j.appender.sqltiming=org.apache.log4j.RollingFileAppender
 log4j.appender.sqltiming.File=./logs/sqltiming.log
@@ -108,10 +114,10 @@ ${symbol_pound}log4j.debug=true
 
 ${symbol_pound} DataNucleus
 ${symbol_pound} the first two log the DML and DDL (if set to DEBUG)
-log4j.logger.DataNucleus.Datastore.Native=DEBUG, Console, sql
-log4j.logger.DataNucleus.Datastore.Schema=DEBUG, Console, sql
-${symbol_pound}log4j.logger.DataNucleus.Datastore.Native=WARN, Console
-${symbol_pound}log4j.logger.DataNucleus.Datastore.Schema=WARN, Console
+log4j.logger.DataNucleus.Datastore.Native=DEBUG, Console, sql-dml
+log4j.logger.DataNucleus.Datastore.Schema=DEBUG, Console, sql-ddl
+${symbol_pound}log4j.logger.DataNucleus.Datastore.Native=WARN, Console, sql-dml
+${symbol_pound}log4j.logger.DataNucleus.Datastore.Schema=WARN, Console, sql-ddl
 ${symbol_pound} the remainder can probably be left to WARN
 log4j.logger.DataNucleus.Persistence=WARN, Console
 log4j.logger.DataNucleus.Transaction=WARN, Console
@@ -155,7 +161,7 @@ log4j.additivity.DataNucleus.Datastore.IDE=false
 
 
 ${symbol_pound} if using log4jdbc-remix as JDBC driver
-${symbol_pound}log4j.logger.jdbc.sqlonly=DEBUG, sql, Console
+${symbol_pound}log4j.logger.jdbc.sqlonly=DEBUG, sql-dml, Console
 ${symbol_pound}log4j.additivity.jdbc.sqlonly=false
 ${symbol_pound}log4j.logger.jdbc.resultsettable=DEBUG, jdbc, Console
 ${symbol_pound}log4j.additivity.jdbc.resultsettable=false
@@ -228,5 +234,5 @@ log4j.additivity.dom.simple.SimpleObject=false
 
 
 ${symbol_pound} ERROR to suppress the WARNings we get as of 1.15.0
-log4j.logger.org.apache.wicket.page.XmlPartialPageUpdate=ERROR,console
+log4j.logger.org.apache.wicket.page.XmlPartialPageUpdate=ERROR,Console
 log4j.additivity.org.apache.wicket.page.XmlPartialPageUpdate=false
diff --git a/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/webapp/about/index.html b/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/webapp/about/index.html
index 299fb64..f726b1c 100644
--- a/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/webapp/about/index.html
+++ b/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/webapp/about/index.html
@@ -61,7 +61,7 @@ ${symbol_pound}wrapper {
              
             <p>
                 This app has been generated using Apache Isis'
-                <a href="http://isis.apache.org/guides/ugfun.html${symbol_pound}_ugfun_getting-started_hellow%6Frld-archetype" target="_blank">Hello World</a> archetype.  Hello World is a tiny application, intended to make it easy to start learning how to write apps on top of the framework.
+                <a href="http://isis.apache.org/guides/ugfun/ugfun.html${symbol_pound}_ugfun_getting-started_hellow%6Frld-archetype" target="_blank">Hello World</a> archetype.  Hello World is a tiny application, intended to make it easy to start learning how to write apps on top of the framework.
                 <br/>
             </p>
 
diff --git a/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/webapp/swagger-ui/index.html b/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/webapp/swagger-ui/index.html
index 59f8d6d..a1edaf3 100644
--- a/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/webapp/swagger-ui/index.html
+++ b/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/webapp/swagger-ui/index.html
@@ -153,9 +153,9 @@
                 <div class='input'><input placeholder="pass" id="input_pass" name="pass" type="password" size="10"/></div>
 
                 <select id="input_baseUrl" name="baseUrl" style="height: 26px;">
-                    <option id="private" label="private" value="/restful/swagger/private"></option>
-                    <option id="public" label="public" value="/restful/swagger/public"></option>
-                    <option id="prototyping" label="prototyping" value="/restful/swagger/prototyping"></option>
+                    <option id="private" label="private" value="../../restful/swagger/private"></option>
+                    <option id="public" label="public" value="../../restful/swagger/public"></option>
+                    <option id="prototyping" label="prototyping" value="../../restful/swagger/prototyping"></option>
                 </select>
             </div>
             <div class='input' style="display:none;"><input placeholder="api_key" id="input_apiKey" name="apiKey" type="text"/></div>
diff --git a/example/archetype/helloworld/src/main/resources/archetype-resources/src/test/java/domainapp/dom/impl/HelloWorldObjectTest_delete.java b/example/archetype/helloworld/src/main/resources/archetype-resources/src/test/java/domainapp/dom/impl/HelloWorldObjectTest_delete.java
index 4adb55a..da9d6f2 100644
--- a/example/archetype/helloworld/src/main/resources/archetype-resources/src/test/java/domainapp/dom/impl/HelloWorldObjectTest_delete.java
+++ b/example/archetype/helloworld/src/main/resources/archetype-resources/src/test/java/domainapp/dom/impl/HelloWorldObjectTest_delete.java
@@ -51,7 +51,7 @@ public class HelloWorldObjectTest_delete {
     public void happy_case() throws Exception {
 
         // given
-        final HelloWorldObject object = HelloWorldObject.create("Foo");
+        final HelloWorldObject object = new HelloWorldObject("Foo");
         object.titleService = mockTitleService;
         object.messageService = mockMessageService;
         object.repositoryService = mockRepositoryService;
diff --git a/example/archetype/helloworld/src/main/resources/archetype-resources/src/test/java/domainapp/dom/impl/HelloWorldObjectTest_updateName.java b/example/archetype/helloworld/src/main/resources/archetype-resources/src/test/java/domainapp/dom/impl/HelloWorldObjectTest_updateName.java
index 287187f..4f5a1f2 100644
--- a/example/archetype/helloworld/src/main/resources/archetype-resources/src/test/java/domainapp/dom/impl/HelloWorldObjectTest_updateName.java
+++ b/example/archetype/helloworld/src/main/resources/archetype-resources/src/test/java/domainapp/dom/impl/HelloWorldObjectTest_updateName.java
@@ -30,7 +30,7 @@ public class HelloWorldObjectTest_updateName {
     @Test
     public void happy_case() throws Exception {
         // given
-        final HelloWorldObject object = HelloWorldObject.create("Foo");
+        final HelloWorldObject object = new HelloWorldObject("Foo");
         assertThat(object.getName()).isEqualTo("Foo");
 
         // when
diff --git a/example/archetype/helloworld/src/test/resources/projects/basic/archetype.properties b/example/archetype/helloworld/src/test/resources/projects/basic/archetype.properties
index 7582506..1d3452a 100644
--- a/example/archetype/helloworld/src/test/resources/projects/basic/archetype.properties
+++ b/example/archetype/helloworld/src/test/resources/projects/basic/archetype.properties
@@ -1,4 +1,4 @@
-#Fri Sep 22 00:27:13 BST 2017
+#Thu Jan 04 19:13:48 GMT 2018
 package=it.pkg
 version=0.1-SNAPSHOT
 groupId=archetype.it

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