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 2019/12/12 11:34:41 UTC
[isis] 01/10: ISIS-2222: restructures bootstrapping for demo app
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
commit 009c09047c0f4da05b76720f3cdbd070f56b3a09
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Dec 12 07:01:24 2019 +0000
ISIS-2222: restructures bootstrapping for demo app
Also debugging inability to run datanucleus:enhance for secman/persistence-jdo
---
.../pages/hints-and-tips/datanucleus-enhancer.adoc | 2 +-
examples/demo/pom.xml | 4 +-
.../src/main/java/demoapp/application/DemoApp.java | 50 ---------
.../java/demoapp/application/DemoAppManifest.java | 99 -----------------
.../demo/src/main/java/demoapp/webapp/DemoApp.java | 121 +++++++++++++++++++++
.../{ => webapp}/application/menubars.layout.xml | 7 +-
.../demo/src/main/resources/application.properties | 86 ---------------
examples/demo/src/main/resources/application.yml | 108 ++++++++++++++++++
examples/demo/src/main/resources/banner.txt | 6 +
examples/demo/src/main/resources/static/index.html | 27 +++--
extensions/pom.xml | 74 +++++++++++++
11 files changed, 331 insertions(+), 253 deletions(-)
diff --git a/antora/components/toc/modules/devguide/pages/hints-and-tips/datanucleus-enhancer.adoc b/antora/components/toc/modules/devguide/pages/hints-and-tips/datanucleus-enhancer.adoc
index 2741f79..2d2377c 100644
--- a/antora/components/toc/modules/devguide/pages/hints-and-tips/datanucleus-enhancer.adoc
+++ b/antora/components/toc/modules/devguide/pages/hints-and-tips/datanucleus-enhancer.adoc
@@ -18,7 +18,7 @@ Bytecode enhancement is actually a requirement of the JDO spec; the process is d
What this means is that the enhancer -- available as both a Maven plugin and as an Eclipse plugin -- must, one way or another, be integrated into your development environment.
-If working from the Maven command line, JDO enhancement is done using the `maven-datanucleus-plugin`.
+If working from the Maven command line, JDO enhancement is done using the `datanucleus-maven-plugin`.
Both the xref:starters:helloworld:about.adoc[HelloWorld] and xref:starters:simpleapp:about.adoc[SimpleApp] Maven archetypes generate applications that have this plugin pre-configured.
diff --git a/examples/demo/pom.xml b/examples/demo/pom.xml
index d28908a..b22e602 100644
--- a/examples/demo/pom.xml
+++ b/examples/demo/pom.xml
@@ -190,7 +190,7 @@
<jvmFlags>
<jvmFlag>-Xmx512m</jvmFlag>
</jvmFlags>
- <mainClass>demoapp.application.DemoApp</mainClass>
+ <mainClass>demoapp.webapp.DemoApp</mainClass>
<ports>
<port>8080</port>
</ports>
@@ -240,7 +240,7 @@
<jvmFlags>
<jvmFlag>-Xmx512m</jvmFlag>
</jvmFlags>
- <mainClass>demoapp.application.DemoApp</mainClass>
+ <mainClass>demoapp.webapp.DemoApp</mainClass>
<ports>
<port>8080</port>
</ports>
diff --git a/examples/demo/src/main/java/demoapp/application/DemoApp.java b/examples/demo/src/main/java/demoapp/application/DemoApp.java
deleted file mode 100644
index db9ac79..0000000
--- a/examples/demo/src/main/java/demoapp/application/DemoApp.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package demoapp.application;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
-import org.springframework.context.annotation.Import;
-
-/**
- * Bootstrap the application.
- */
-@SpringBootApplication
-@Import({
- DemoAppManifest.class,
-})
-public class DemoApp extends SpringBootServletInitializer {
-
- /**
- *
- * @param args
- * @implNote this is to support the <em>Spring Boot Maven Plugin</em>, which auto-detects an
- * entry point by searching for classes having a {@code main(...)}
- */
- public static void main(String[] args) {
- //IsisPresets.prototyping();
- //IsisPresets.logging(IsisBeanScanInterceptorForSpring.class, "DEBUG");
- //IsisPresets.logging(IsisBeanTypeRegistry.class, "DEBUG");
- //IsisPresets.logging(org.apache.shiro.realm.AuthorizingRealm.class, "TRACE");
- //IsisPresets.logging(org.apache.isis.metamodel.authorization.standard.AuthorizationFacetAbstract.class, "DEBUG");
- //IsisPresets.logging(org.apache.isis.webapp.modules.templresources.TemplateResourceServlet.class, "DEBUG");
- SpringApplication.run(new Class[] { DemoApp.class }, args);
- }
-}
diff --git a/examples/demo/src/main/java/demoapp/application/DemoAppManifest.java b/examples/demo/src/main/java/demoapp/application/DemoAppManifest.java
deleted file mode 100644
index 12b89c1..0000000
--- a/examples/demo/src/main/java/demoapp/application/DemoAppManifest.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package demoapp.application;
-
-import javax.inject.Singleton;
-
-import org.apache.isis.viewer.restfulobjects.viewer.IsisModuleRestfulObjectsViewer;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Import;
-import org.springframework.context.annotation.PropertySource;
-import org.springframework.context.annotation.PropertySources;
-
-import org.apache.isis.config.presets.IsisPresets;
-import org.apache.isis.extensions.fixtures.IsisModuleExtFixtures;
-import org.apache.isis.extensions.secman.api.SecurityModuleConfig;
-import org.apache.isis.extensions.secman.api.permission.PermissionsEvaluationService;
-import org.apache.isis.extensions.secman.api.permission.PermissionsEvaluationServiceAllowBeatsVeto;
-import org.apache.isis.extensions.secman.encryption.jbcrypt.IsisModuleSecmanEncryptionJbcrypt;
-import org.apache.isis.extensions.secman.jdo.IsisModuleSecmanPersistenceJdo;
-import org.apache.isis.extensions.secman.model.IsisModuleSecmanModel;
-import org.apache.isis.extensions.secman.shiro.IsisModuleSecmanRealmShiro;
-import org.apache.isis.extensions.sse.IsisModuleExtSse;
-import org.apache.isis.persistence.jdo.datanucleus5.IsisModuleJdoDataNucleus5;
-import org.apache.isis.webboot.springboot.IsisModuleSpringBoot;
-import org.apache.isis.security.shiro.IsisModuleSecurityShiro;
-import org.apache.isis.viewer.wicket.viewer.IsisModuleWicketViewer;
-
-import demoapp.dom.DemoModule;
-import demoapp.utils.LibraryPreloadingService;
-
-/**
- * Makes the integral parts of the 'demo' web application.
- */
-@Configuration
-@PropertySources({
- @PropertySource(IsisPresets.HsqlDbInMemory),
- @PropertySource(IsisPresets.NoTranslations),
- @PropertySource(IsisPresets.SilenceWicket),
-})
-@Import({
- IsisModuleSpringBoot.class,
- IsisModuleSecurityShiro.class,
- IsisModuleJdoDataNucleus5.class,
- IsisModuleWicketViewer.class,
- IsisModuleExtSse.class, // server sent events
- IsisModuleRestfulObjectsViewer.class,
-
- // Security Manager Extension (secman)
- IsisModuleSecmanModel.class,
- IsisModuleSecmanRealmShiro.class,
- IsisModuleSecmanPersistenceJdo.class,
- IsisModuleSecmanEncryptionJbcrypt.class,
-
- IsisModuleExtFixtures.class,
-
- LibraryPreloadingService.class // just a performance enhancement
-
-})
-@ComponentScan(
- basePackageClasses= {
- DemoModule.class
- }
-)
-public class DemoAppManifest {
-
- @Bean @Singleton
- public SecurityModuleConfig securityModuleConfigBean() {
- return SecurityModuleConfig.builder()
- .adminUserName("sven")
- .adminAdditionalPackagePermission("demoapp.dom")
- .adminAdditionalPackagePermission("org.apache.isis")
- .build();
- }
-
- @Bean @Singleton
- public PermissionsEvaluationService permissionsEvaluationService() {
- return new PermissionsEvaluationServiceAllowBeatsVeto();
- }
-
-
-}
diff --git a/examples/demo/src/main/java/demoapp/webapp/DemoApp.java b/examples/demo/src/main/java/demoapp/webapp/DemoApp.java
new file mode 100644
index 0000000..61fe273
--- /dev/null
+++ b/examples/demo/src/main/java/demoapp/webapp/DemoApp.java
@@ -0,0 +1,121 @@
+/*
+ * 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 demoapp.webapp;
+
+import demoapp.dom.DemoModule;
+import demoapp.utils.LibraryPreloadingService;
+
+import javax.inject.Singleton;
+
+import org.apache.isis.config.presets.IsisPresets;
+import org.apache.isis.extensions.fixtures.IsisModuleExtFixtures;
+import org.apache.isis.extensions.secman.api.SecurityModuleConfig;
+import org.apache.isis.extensions.secman.api.permission.PermissionsEvaluationService;
+import org.apache.isis.extensions.secman.api.permission.PermissionsEvaluationServiceAllowBeatsVeto;
+import org.apache.isis.extensions.secman.encryption.jbcrypt.IsisModuleSecmanEncryptionJbcrypt;
+import org.apache.isis.extensions.secman.jdo.IsisModuleSecmanPersistenceJdo;
+import org.apache.isis.extensions.secman.model.IsisModuleSecmanModel;
+import org.apache.isis.extensions.secman.shiro.IsisModuleSecmanRealmShiro;
+import org.apache.isis.extensions.sse.IsisModuleExtSse;
+import org.apache.isis.persistence.jdo.datanucleus5.IsisModuleJdoDataNucleus5;
+import org.apache.isis.security.shiro.IsisModuleSecurityShiro;
+import org.apache.isis.viewer.restfulobjects.viewer.IsisModuleRestfulObjectsViewer;
+import org.apache.isis.viewer.wicket.viewer.IsisModuleWicketViewer;
+import org.apache.isis.webboot.springboot.IsisModuleSpringBoot;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
+import org.springframework.context.annotation.*;
+
+/**
+ * Bootstrap the application.
+ */
+@SpringBootApplication
+@Import({
+ DemoApp.AppManifest.class,
+})
+public class DemoApp extends SpringBootServletInitializer {
+
+ /**
+ *
+ * @param args
+ * @implNote this is to support the <em>Spring Boot Maven Plugin</em>, which auto-detects an
+ * entry point by searching for classes having a {@code main(...)}
+ */
+ public static void main(String[] args) {
+ //IsisPresets.prototyping();
+ //IsisPresets.logging(IsisBeanScanInterceptorForSpring.class, "DEBUG");
+ //IsisPresets.logging(IsisBeanTypeRegistry.class, "DEBUG");
+ //IsisPresets.logging(org.apache.shiro.realm.AuthorizingRealm.class, "TRACE");
+ //IsisPresets.logging(org.apache.isis.metamodel.authorization.standard.AuthorizationFacetAbstract.class, "DEBUG");
+ //IsisPresets.logging(org.apache.isis.webapp.modules.templresources.TemplateResourceServlet.class, "DEBUG");
+ SpringApplication.run(new Class[] { DemoApp.class }, args);
+ }
+
+ /**
+ * Makes the integral parts of the 'demo' web application.
+ */
+ @Configuration
+ @PropertySources({
+ @PropertySource(IsisPresets.HsqlDbInMemory),
+ @PropertySource(IsisPresets.NoTranslations),
+ @PropertySource(IsisPresets.SilenceWicket),
+ })
+ @Import({
+ IsisModuleSpringBoot.class,
+ IsisModuleSecurityShiro.class,
+ IsisModuleJdoDataNucleus5.class,
+ IsisModuleWicketViewer.class,
+ IsisModuleExtSse.class, // server sent events
+ IsisModuleRestfulObjectsViewer.class,
+
+ // Security Manager Extension (secman)
+ IsisModuleSecmanModel.class,
+ IsisModuleSecmanRealmShiro.class,
+ IsisModuleSecmanPersistenceJdo.class,
+ IsisModuleSecmanEncryptionJbcrypt.class,
+
+ IsisModuleExtFixtures.class,
+
+ LibraryPreloadingService.class // just a performance enhancement
+
+ })
+ @ComponentScan(
+ basePackageClasses= {
+ DemoModule.class
+ }
+ )
+ public static class AppManifest {
+
+ @Bean @Singleton
+ public SecurityModuleConfig securityModuleConfigBean() {
+ return SecurityModuleConfig.builder()
+ .adminUserName("sven")
+ .adminAdditionalPackagePermission("demoapp.dom")
+ .adminAdditionalPackagePermission("org.apache.isis")
+ .build();
+ }
+
+ @Bean @Singleton
+ public PermissionsEvaluationService permissionsEvaluationService() {
+ return new PermissionsEvaluationServiceAllowBeatsVeto();
+ }
+ }
+
+}
diff --git a/examples/demo/src/main/java/demoapp/application/menubars.layout.xml b/examples/demo/src/main/java/demoapp/webapp/application/menubars.layout.xml
similarity index 96%
rename from examples/demo/src/main/java/demoapp/application/menubars.layout.xml
rename to examples/demo/src/main/java/demoapp/webapp/application/menubars.layout.xml
index f59a878..8634516 100644
--- a/examples/demo/src/main/java/demoapp/application/menubars.layout.xml
+++ b/examples/demo/src/main/java/demoapp/webapp/application/menubars.layout.xml
@@ -86,13 +86,10 @@
<mb3:menu>
<mb3:named>Prototyping</mb3:named>
<mb3:section>
- <mb3:serviceAction objectType="isisApplib.FixtureScriptsDefault" id="runFixtureScript">
+ <mb3:serviceAction objectType="isisExtFixtures.FixtureScripts" 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">
+ <mb3:serviceAction objectType="isisExtFixtures.FixtureScripts" id="recreateObjectsAndReturnFirst">
<cpt:named>Recreate Objects And Return First</cpt:named>
</mb3:serviceAction>
</mb3:section>
diff --git a/examples/demo/src/main/resources/application.properties b/examples/demo/src/main/resources/application.properties
deleted file mode 100644
index eef7bf1..0000000
--- a/examples/demo/src/main/resources/application.properties
+++ /dev/null
@@ -1,86 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-isis.reflector.validator.allowDeprecated=false
-isis.reflector.validator.noParamsOnly=true
-isis.reflector.validator.explicitObjectType=false
-isis.reflector.validator.serviceActionsOnly=true
-isis.reflector.validator.mixinsOnly=true
-
-
-isis.reflector.facet.cssClassFa.patterns=\
- new.*:fa-plus,\
- add.*:fa-plus-square,\
- create.*:fa-plus,\
- update.*:fa-edit,\
- delete.*:fa-trash,\
- find.*:fa-search,\
- list.*:fa-list
-
-isis.reflector.facet.cssClass.patterns=\
- delete.*:btn-danger
-
-isis.objects.editing=false
-
-isis.viewer.wicket.bookmarkedPages.showChooser=false
-isis.viewer.wicket.breadcrumbs.showChooser=false
-
-isis.viewer.wicket.application.menubarsLayoutXml=demoapp/application/menubars.layout.xml
-isis.viewer.wicket.application.faviconUrl=/images/favicon.png
-
-isis.viewer.wicket.application.brandLogoHeader=/images/gift_48.png
-isis.viewer.wicket.application.brandLogoSignin=/images/gift_256.png
-
-isis.viewer.wicket.application.name=Isis Demo App
-isis.viewer.wicket.application.css=/css/application.css
-isis.viewer.wicket.application.js=/scripts/application.js
-isis.viewer.wicket.application.about=Isis Demo App
-isis.viewer.wicket.welcome.file=welcome.html
-
-isis.viewer.wicket.credit[0].image=/images/apache-isis/logo-48x48.png
-isis.viewer.wicket.credit[0].name=Apache Isis
-isis.viewer.wicket.credit[0].url=http://isis.apache.org
-
-isis.viewer.wicket.themes.initial=bootstrap-theme
-isis.viewer.wicket.themes.showChooser=yes
-isis.viewer.wicket.themes.enabled=bootstrap-theme,Cosmo,Flatly,Darkly,Sandstone,United
-
-isis.viewer.wicket.maxTitleLengthInStandaloneTables=0
-isis.viewer.wicket.maxTitleLengthInParentedTables=0
-
-
-isis.persistor.datanucleus.impl.datanucleus.schema.autoCreateAll=true
-isis.persistor.datanucleus.impl.datanucleus.schema.validateTables=true
-isis.persistor.datanucleus.impl.datanucleus.schema.validateConstraints=true
-
-
-isis.persistor.datanucleus.impl.datanucleus.persistenceByReachabilityAtCommit=false
-isis.persistor.datanucleus.impl.datanucleus.identifier.case=MixedCase
-isis.persistor.datanucleus.impl.datanucleus.cache.level2.type=none
-isis.persistor.datanucleus.impl.datanucleus.cache.level2.mode=ENABLE_SELECTIVE
-
-#disable wicket debug-bar
-isis.viewer.wicket.developmentUtilities.enable=false
-#disable cache verification ...
-isis.persistor.datanucleus.impl.datanucleus.findObject.validateWhenCached=false
-#disable translation ...
-isis.services.translation.po.mode=disable
-#modal action rendering is considered to work for all use-cases
-isis.viewer.wicket.dialogMode=modal
-
-
-
diff --git a/examples/demo/src/main/resources/application.yml b/examples/demo/src/main/resources/application.yml
new file mode 100644
index 0000000..7a422a7
--- /dev/null
+++ b/examples/demo/src/main/resources/application.yml
@@ -0,0 +1,108 @@
+# 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.
+#
+# See also config/application.properties
+#
+isis:
+ reflector:
+ explicit-annotations:
+ action: true
+ validator:
+ allow-deprecated: false
+ no-params-only: true
+ explicit-object-type: true
+ service-actions-only: true
+ mixins-only: true
+
+ facet:
+ css-class-fa:
+ patterns:
+ new.*:fa-plus,
+ add.*:fa-plus-square,
+ create.*:fa-plus,
+ update.*:fa-edit,
+ delete.*:fa-trash,
+ find.*:fa-search,
+ list.*:fa-list
+
+ css-class:
+ patterns:
+ delete.*:btn-danger
+
+ objects:
+ editing: false
+
+ viewer:
+ wicket:
+ application:
+ menubars-layout-xml: domainapp/webapp/application/menubars.layout.xml
+ favicon-url: /images/favicon.png
+ brand-logo-header: /images/gift_48.png
+ brand-logo-signin: /images/gift_256.png
+ name: Apache Isis Demo App
+ css: css/application.css
+ js: scripts/application.js
+ about: Apache Isis Hello World
+
+
+ credit[0]:
+ image: /images/apache-isis/logo-48x48.png
+ name: Apache Isis
+ url: http://isis.apache.org
+
+ themes:
+ initial: bootstrap-theme
+ showChooser: true
+ enabled: bootstrap-theme,Cosmo,Flatly,Darkly,Sandstone,United
+
+ max-title-length-in-standalone-tables: 0
+ max-title-length-in-parented-tables: 0
+
+ development-utilities:
+ enable: false
+ bookmarked-pages:
+ show-chooser: false
+ breadcrumbs:
+ show-chooser: false
+ dialog-mode: sidebar
+ dialog-mode-for-menu: modal
+
+ persistor:
+ datanucleus:
+ impl:
+ # note that properties under 'isis.persistor.datanucleus.impl' are passed through directly
+ # to DataNucleus, and must use camelCase rather than kebab-case
+ datanucleus:
+ schema:
+ validateTables: true
+ validateConstraints: true
+
+ persistenceByReachabilityAtCommit: false
+ identifier:
+ case: MixedCase
+
+ cache:
+ level2:
+ type: none
+ mode: ENABLE_SELECTIVE
+ services:
+ translation:
+ po:
+ mode: disable
+spring:
+ banner:
+ location: banner.txt
diff --git a/examples/demo/src/main/resources/banner.txt b/examples/demo/src/main/resources/banner.txt
new file mode 100644
index 0000000..1348a76
--- /dev/null
+++ b/examples/demo/src/main/resources/banner.txt
@@ -0,0 +1,6 @@
+ _ _ ___ _
+ / \ _ __ __ _ ___| |__ ___ |_ _|___(_)___
+ / _ \ | '_ \ / _` |/ __| '_ \ / _ \ | |/ __| / __|
+ / ___ \| |_) | (_| | (__| | | | __/ | |\__ \ \__ \
+ /_/ \_\ .__/ \__,_|\___|_| |_|\___| |___|___/_|___/
+ |_|
\ No newline at end of file
diff --git a/examples/demo/src/main/resources/static/index.html b/examples/demo/src/main/resources/static/index.html
index 17ea0a8..e0a7d9f 100644
--- a/examples/demo/src/main/resources/static/index.html
+++ b/examples/demo/src/main/resources/static/index.html
@@ -20,7 +20,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
- <title>Apache Isis™ Demo 2</title>
+ <title>Apache Isis™ v2 Demo</title>
<style type="text/css">
body {
@@ -57,7 +57,7 @@ th, td {
<img alt="Isis Logo" src="images/apache-isis/logo.png" />
<p>
- This demo app illustrustrates some features of the Apache Isis' programming model.
+ This demo app illustrates some features of the Apache Isis' programming model.
<br/>
</p>
@@ -65,24 +65,31 @@ th, td {
<ul>
<li>
<p>
- <b><a href="wicket/">wicket/</a></b>
+ <b><a href="wicket/">Generic UI (Wicket)</a></b>
</p>
<p>
- provides access to a generic UI for end-users,
- Apache Isis' <a href="http://isis.apache.org/guides/ugvw/ugvw.html" target="_blank">Wicket Viewer</a>.
- As its name suggests, this viewer is built on top of <a href="http://wicket.apache.org" target="_blank">Apache Wicket</a>™.
+ provides access to a generic UI for end-users, Apache Isis'
+ <a href="http://isis.apache.org/guides/ugvw/ugvw.html" target="_blank">Wicket Viewer</a>.
+ As its name suggests, this viewer is built on top of
+ <a href="http://wicket.apache.org" target="_blank">Apache Wicket</a>™.
</p>
</li>
<li>
<p>
<b>
- <a href="swagger-ui/index.html">swagger-ui/</a>
+ <a href="swagger-ui/index.thtml">RESTful API (Swagger)</a>
</b>
</p>
<p>
- provides access to a Swagger UI which uses a subset of the framework's automatically
- generated <a href="restful/">RESTful API</a> (provided by the
- <a href="http://isis.apache.org/guides/ugvro/ugvro.html" target="_blank">Restful Objects viewer</a>, conformant with the <a href="http://restfulobjects.org" target="_blank">Restful Objects</a> spec).
+ provides access to a Swagger UI for convenient access to a subset of the framework's RESTful
+ API, automatically generated by the
+ <a href="http://isis.apache.org/guides/ugvro/ugvro.html"
+ target="_blank">Restful Objects viewer</a>.
+ </p>
+ <p>
+ The full backend API (at <a href="restful/">restful/</a>) renders both simple and also richer
+ hypermedia representations of domain objects, the latter conformant with the
+ <a href="http://restfulobjects.org" target="_blank">Restful Objects</a> spec.
</p>
</li>
</ul>
diff --git a/extensions/pom.xml b/extensions/pom.xml
index 1640d56..b9fe027 100644
--- a/extensions/pom.xml
+++ b/extensions/pom.xml
@@ -227,6 +227,80 @@
<module>lib/unittestsupport/impl</module>
</modules>
+ <profiles>
+ <profile>
+ <id>isis-app-starter-datanucleusenhance</id>
+ <activation>
+ <file>
+ <exists>${basedir}/logging-dn-enhance.properties</exists>
+ </file>
+ </activation>
+ <properties>
+
+ <!-- keep in sync with versions used in Apache Isis -->
+ <datanucleus-api-jdo.version>5.2.2</datanucleus-api-jdo.version>
+ <datanucleus-core.version>5.2.2</datanucleus-core.version>
+ <datanucleus-jodatime.version>5.2.0-release</datanucleus-jodatime.version>
+ <datanucleus-maven-plugin.version>5.2.1</datanucleus-maven-plugin.version>
+
+ <datanucleus-maven-plugin.log4jConfiguration>${basedir}/logging-dn-enhance.properties</datanucleus-maven-plugin.log4jConfiguration>
+ <datanucleus-maven-plugin.verbose>true</datanucleus-maven-plugin.verbose>
+ <datanucleus-maven-plugin.fork>false</datanucleus-maven-plugin.fork>
+
+ </properties>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.datanucleus</groupId>
+ <artifactId>datanucleus-maven-plugin</artifactId>
+ <version>${datanucleus-maven-plugin.version}</version>
+ <configuration>
+ <fork>${datanucleus-maven-plugin.fork}</fork>
+ <log4jConfiguration>${datanucleus-maven-plugin.log4jConfiguration}</log4jConfiguration>
+ <verbose>${datanucleus-maven-plugin.verbose}</verbose>
+ </configuration>
+ <executions>
+ <execution>
+ <id>process-classes</id>
+ <phase>process-classes</phase>
+ <goals>
+ <goal>enhance</goal>
+ </goals>
+ </execution>
+ <execution>
+ <id>process-test-classes</id>
+ <phase>process-test-classes</phase>
+ <goals>
+ <goal>test-enhance</goal>
+ </goals>
+ <configuration>
+ <metadataDirectory>${project.build.testOutputDirectory}</metadataDirectory>
+ </configuration>
+ </execution>
+ </executions>
+ <dependencies>
+ <dependency>
+ <groupId>org.datanucleus</groupId>
+ <artifactId>datanucleus-core</artifactId>
+ <version>${datanucleus-core.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.datanucleus</groupId>
+ <artifactId>datanucleus-api-jdo</artifactId>
+ <version>${datanucleus-api-jdo.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.datanucleus</groupId>
+ <artifactId>datanucleus-jodatime</artifactId>
+ <version>${datanucleus-jodatime.version}</version>
+ </dependency>
+ </dependencies>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+
+ </profiles>
</project>