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 2020/01/26 18:14:01 UTC
[isis-app-helloworld] branch master updated: updates in line with
docs
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-app-helloworld.git
The following commit(s) were added to refs/heads/master by this push:
new 10c275a updates in line with docs
10c275a is described below
commit 10c275a1b2735cb2ddbc6f1666e99822b54843f5
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Sun Jan 26 18:13:44 2020 +0000
updates in line with docs
---
README.adoc | 5 +-
pom.xml | 2 +-
.../domainapp/modules/hello/HelloWorldModule.java | 2 +
.../hello/dom/{impl => hwo}/HelloWorldObject.java | 11 ++-
.../dom/{impl => hwo}/HelloWorldObject.layout.xml | 0
.../hello/dom/{impl => hwo}/HelloWorldObject.png | Bin
.../hello/dom/{impl => hwo}/HelloWorldObjects.java | 20 ++++--
.../modules/hello/{dom => }/types/Name.java | 2 +-
.../modules/hello/{dom => }/types/Notes.java | 2 +-
src/main/java/domainapp/webapp/AppManifest.java | 31 ++++++++
src/main/java/domainapp/webapp/HelloWorldApp.java | 37 +---------
src/main/resources/application.yml | 42 ++++-------
src/main/resources/config/application.properties | 2 +
src/main/resources/log4j2-spring.xml | 80 +++++++++++----------
.../application => resources}/menubars.layout.xml | 17 +----
src/main/webapp/META-INF/context.xml | 2 -
.../hello/dom/hwo/HellWorldObjects_Test.java | 79 ++++++++++++++++++++
.../hello/dom/hwo/HelloWorldObject_Test.java | 71 ++++++++++++++++++
.../dom/impl/HelloWorldObject_delete_Test.java | 53 --------------
.../dom/impl/HelloWorldObject_updateName_Test.java | 24 -------
20 files changed, 270 insertions(+), 212 deletions(-)
diff --git a/README.adoc b/README.adoc
index e68a9d0..9bab573 100644
--- a/README.adoc
+++ b/README.adoc
@@ -21,9 +21,10 @@ It provides more structure and includes examples of fixtures, unit tests, integr
+
[source,bash]
----
-REPO=isis-app-helloworld
+APP=simpleapp
BRANCH=master
+REPO=isis-app-$APP
curl "https://codeload.github.com/apache/$REPO/zip/$BRANCH" | jar xv
mv $REPO-$BRANCH $REPO
cd $REPO
@@ -43,6 +44,8 @@ mvn clean install
mvn spring-boot:run
----
+* Browse to http://localhost:8080.
+
* Login using:
** username: `sven`
diff --git a/pom.xml b/pom.xml
index a5e0ba8..8e80408 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,7 +7,7 @@
<parent>
<groupId>org.apache.isis.app</groupId>
<artifactId>isis-app-starter-parent</artifactId>
- <version>2.0.0-M2.20200116-1350-2dd6b3a2</version>
+ <version>2.0.0-M2.20200126-1742-e89bdf6c</version>
<!--
<version>2.0.0-M3-SNAPSHOT</version>
-->
diff --git a/src/main/java/domainapp/modules/hello/HelloWorldModule.java b/src/main/java/domainapp/modules/hello/HelloWorldModule.java
index 814a53f..df8f52f 100644
--- a/src/main/java/domainapp/modules/hello/HelloWorldModule.java
+++ b/src/main/java/domainapp/modules/hello/HelloWorldModule.java
@@ -2,8 +2,10 @@ package domainapp.modules.hello;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
@Configuration
+@Import({})
@ComponentScan
public class HelloWorldModule {
diff --git a/src/main/java/domainapp/modules/hello/dom/impl/HelloWorldObject.java b/src/main/java/domainapp/modules/hello/dom/hwo/HelloWorldObject.java
similarity index 90%
rename from src/main/java/domainapp/modules/hello/dom/impl/HelloWorldObject.java
rename to src/main/java/domainapp/modules/hello/dom/hwo/HelloWorldObject.java
index a47d089..a1178d0 100644
--- a/src/main/java/domainapp/modules/hello/dom/impl/HelloWorldObject.java
+++ b/src/main/java/domainapp/modules/hello/dom/hwo/HelloWorldObject.java
@@ -1,4 +1,4 @@
-package domainapp.modules.hello.dom.impl;
+package domainapp.modules.hello.dom.hwo;
import java.util.Comparator;
@@ -10,7 +10,6 @@ import javax.jdo.annotations.VersionStrategy;
import org.apache.isis.applib.annotation.Action;
import org.apache.isis.applib.annotation.ActionLayout;
import org.apache.isis.applib.annotation.Auditing;
-import org.apache.isis.applib.annotation.CommandReification;
import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.applib.annotation.DomainObjectLayout;
import org.apache.isis.applib.annotation.MemberOrder;
@@ -20,10 +19,10 @@ 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 domainapp.modules.hello.dom.types.Name;
-import domainapp.modules.hello.dom.types.Notes;
+import domainapp.modules.hello.types.Name;
+import domainapp.modules.hello.types.Notes;
-@javax.jdo.annotations.PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "helloworld" )
+@javax.jdo.annotations.PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "hello" )
@javax.jdo.annotations.DatastoreIdentity(strategy = IdGeneratorStrategy.IDENTITY, column = "id")
@javax.jdo.annotations.Version(strategy= VersionStrategy.DATE_TIME, column ="version")
@javax.jdo.annotations.Unique(name="HelloWorldObject_name_UNQ", members = {"name"})
@@ -63,7 +62,7 @@ public class HelloWorldObject implements Comparable<HelloWorldObject> {
@Action(
semantics = SemanticsOf.IDEMPOTENT,
- command = CommandReification.ENABLED, publishing = Publishing.ENABLED,
+ publishing = Publishing.ENABLED,
associateWith = "name"
)
public HelloWorldObject updateName(
diff --git a/src/main/java/domainapp/modules/hello/dom/impl/HelloWorldObject.layout.xml b/src/main/java/domainapp/modules/hello/dom/hwo/HelloWorldObject.layout.xml
similarity index 100%
rename from src/main/java/domainapp/modules/hello/dom/impl/HelloWorldObject.layout.xml
rename to src/main/java/domainapp/modules/hello/dom/hwo/HelloWorldObject.layout.xml
diff --git a/src/main/java/domainapp/modules/hello/dom/impl/HelloWorldObject.png b/src/main/java/domainapp/modules/hello/dom/hwo/HelloWorldObject.png
similarity index 100%
rename from src/main/java/domainapp/modules/hello/dom/impl/HelloWorldObject.png
rename to src/main/java/domainapp/modules/hello/dom/hwo/HelloWorldObject.png
diff --git a/src/main/java/domainapp/modules/hello/dom/impl/HelloWorldObjects.java b/src/main/java/domainapp/modules/hello/dom/hwo/HelloWorldObjects.java
similarity index 76%
rename from src/main/java/domainapp/modules/hello/dom/impl/HelloWorldObjects.java
rename to src/main/java/domainapp/modules/hello/dom/hwo/HelloWorldObjects.java
index e4663a7..8d84435 100644
--- a/src/main/java/domainapp/modules/hello/dom/impl/HelloWorldObjects.java
+++ b/src/main/java/domainapp/modules/hello/dom/hwo/HelloWorldObjects.java
@@ -1,8 +1,7 @@
-package domainapp.modules.hello.dom.impl;
+package domainapp.modules.hello.dom.hwo;
import java.util.List;
-import javax.inject.Inject;
import javax.jdo.JDOQLTypedQuery;
import org.apache.isis.applib.annotation.Action;
@@ -15,14 +14,25 @@ import org.apache.isis.applib.annotation.SemanticsOf;
import org.apache.isis.applib.services.repository.RepositoryService;
import org.apache.isis.persistence.jdo.applib.services.IsisJdoSupport_v3_2;
-import domainapp.modules.hello.dom.types.Name;
+import domainapp.modules.hello.dom.hwo.QHelloWorldObject;
+import domainapp.modules.hello.types.Name;
@DomainService(
nature = NatureOfService.VIEW,
- objectType = "helloworld.HelloWorldObjects"
+ objectType = "hello.HelloWorldObjects"
)
public class HelloWorldObjects {
+ private final RepositoryService repositoryService;
+ private final IsisJdoSupport_v3_2 isisJdoSupport;
+
+ public HelloWorldObjects(
+ final RepositoryService repositoryService,
+ final IsisJdoSupport_v3_2 isisJdoSupport) {
+ this.repositoryService = repositoryService;
+ this.isisJdoSupport = isisJdoSupport;
+ }
+
@Action(semantics = SemanticsOf.NON_IDEMPOTENT)
@ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL)
public HelloWorldObject create(
@@ -52,7 +62,5 @@ public class HelloWorldObjects {
return repositoryService.allInstances(HelloWorldObject.class);
}
- @Inject RepositoryService repositoryService;
- @Inject IsisJdoSupport_v3_2 isisJdoSupport;
}
diff --git a/src/main/java/domainapp/modules/hello/dom/types/Name.java b/src/main/java/domainapp/modules/hello/types/Name.java
similarity index 94%
rename from src/main/java/domainapp/modules/hello/dom/types/Name.java
rename to src/main/java/domainapp/modules/hello/types/Name.java
index 1d0056e..5eeb825 100644
--- a/src/main/java/domainapp/modules/hello/dom/types/Name.java
+++ b/src/main/java/domainapp/modules/hello/types/Name.java
@@ -1,4 +1,4 @@
-package domainapp.modules.hello.dom.types;
+package domainapp.modules.hello.types;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
diff --git a/src/main/java/domainapp/modules/hello/dom/types/Notes.java b/src/main/java/domainapp/modules/hello/types/Notes.java
similarity index 95%
rename from src/main/java/domainapp/modules/hello/dom/types/Notes.java
rename to src/main/java/domainapp/modules/hello/types/Notes.java
index 9d6b5a8..0effb61 100644
--- a/src/main/java/domainapp/modules/hello/dom/types/Notes.java
+++ b/src/main/java/domainapp/modules/hello/types/Notes.java
@@ -1,4 +1,4 @@
-package domainapp.modules.hello.dom.types;
+package domainapp.modules.hello.types;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
diff --git a/src/main/java/domainapp/webapp/AppManifest.java b/src/main/java/domainapp/webapp/AppManifest.java
new file mode 100644
index 0000000..6f86bbb
--- /dev/null
+++ b/src/main/java/domainapp/webapp/AppManifest.java
@@ -0,0 +1,31 @@
+package domainapp.webapp;
+
+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.core.config.presets.IsisPresets;
+import org.apache.isis.core.runtimeservices.IsisModuleCoreRuntimeServices;
+import org.apache.isis.persistence.jdo.datanucleus5.IsisModuleJdoDataNucleus5;
+import org.apache.isis.security.shiro.IsisModuleSecurityShiro;
+import org.apache.isis.testing.h2console.ui.IsisModuleTestingH2ConsoleUi;
+import org.apache.isis.viewer.restfulobjects.jaxrsresteasy4.IsisModuleViewerRestfulObjectsJaxrsResteasy4;
+import org.apache.isis.viewer.wicket.viewer.IsisModuleViewerWicketViewer;
+
+import domainapp.modules.hello.HelloWorldModule;
+
+@Configuration
+@Import({
+ IsisModuleCoreRuntimeServices.class,
+ IsisModuleSecurityShiro.class,
+ IsisModuleJdoDataNucleus5.class,
+ IsisModuleViewerRestfulObjectsJaxrsResteasy4.class,
+ IsisModuleViewerWicketViewer.class,
+
+ IsisModuleTestingH2ConsoleUi.class,
+ HelloWorldModule.class
+})
+@PropertySource(IsisPresets.NoTranslations)
+public class AppManifest {
+}
diff --git a/src/main/java/domainapp/webapp/HelloWorldApp.java b/src/main/java/domainapp/webapp/HelloWorldApp.java
index ece283c..0b9aafa 100644
--- a/src/main/java/domainapp/webapp/HelloWorldApp.java
+++ b/src/main/java/domainapp/webapp/HelloWorldApp.java
@@ -3,51 +3,18 @@ package domainapp.webapp;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
-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.core.config.presets.IsisPresets;
-import org.apache.isis.core.runtimeservices.IsisModuleCoreRuntimeServices;
-import org.apache.isis.persistence.jdo.datanucleus5.IsisModuleJdoDataNucleus5;
-import org.apache.isis.security.shiro.IsisModuleSecurityShiro;
-import org.apache.isis.testing.h2console.ui.IsisModuleTestingH2ConsoleUi;
-import org.apache.isis.viewer.restfulobjects.jaxrsresteasy4.IsisModuleViewerRestfulObjectsJaxrsResteasy4;
-import org.apache.isis.viewer.wicket.viewer.IsisModuleViewerWicketViewer;
-
-import domainapp.modules.hello.HelloWorldModule;
@SpringBootApplication
@Import({
- HelloWorldApp.AppManifest.class,
+ AppManifest.class,
})
public class HelloWorldApp extends SpringBootServletInitializer {
- @Configuration
- @PropertySources({
- @PropertySource(IsisPresets.NoTranslations),
- @PropertySource(IsisPresets.DataNucleusAutoCreate),
- })
- @Import({
- IsisModuleCoreRuntimeServices.class,
- IsisModuleSecurityShiro.class,
- IsisModuleJdoDataNucleus5.class,
- IsisModuleViewerRestfulObjectsJaxrsResteasy4.class,
- IsisModuleViewerWicketViewer.class,
-
- IsisModuleTestingH2ConsoleUi.class,
- HelloWorldModule.class
- })
- public static class AppManifest {
- }
-
- /**
- * @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(); // or run with use -DPROTOTYPING=true
SpringApplication.run(new Class[] { HelloWorldApp.class }, args);
}
-
}
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 5e87e85..559ff05 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -9,19 +9,6 @@ isis:
annotation:
action:
explicit: true
- action-layout:
- 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
domain-object:
editing: false
@@ -31,41 +18,38 @@ isis:
allow-deprecated: false
no-params-only: true
explicit-object-type: true
- service-actions-only: true
- mixins-only: true
viewer:
wicket:
application:
- menubars-layout-xml: domainapp/webapp/application/menubars.layout.xml
- brand-logo-header: /images/apache-isis/logo-48x48.png
- favicon-url: /images/favicon.png
- name: Hello World App
+ about: Hello World
+ brand-logo-header: images/apache-isis/logo-48x48.png
css: css/application.css
+ favicon-url: images/favicon.png
js: scripts/application.js
- about: Hello World
+ menubars-layout-xml: menubars.layout.xml
+ name: Hello World App
credit:
- url: http://isis.apache.org
- image: /images/apache-isis/logo-48x48.png
+ image: images/apache-isis/logo-48x48.png
name: Apache Isis
themes:
- initial: Flatly
- showChooser: true
- enabled: Cosmo,Flatly,Darkly,Sandstone,United
+ show-chooser: true
+
+ bookmarked-pages:
+ show-chooser: true
+ show-drop-down-on-footer: true
max-title-length-in-standalone-tables: 0
max-title-length-in-parented-tables: 0
- development-utilities:
- enable: true
-
persistence:
jdo-datanucleus:
impl:
- # note that properties under 'isis.persistor.datanucleus.impl' are passed through directly
- # to DataNucleus, and must use camelCase rather than kebab-case
+ # note that properties under 'isis.persistence.jdo-datanucleus.impl' are passed through directly
+ # to DataNucleus, and use variously camelCase or PascalCase rather than kebab-case
datanucleus:
schema:
validateTables: true
diff --git a/src/main/resources/config/application.properties b/src/main/resources/config/application.properties
index 93135ec..c0b1891 100644
--- a/src/main/resources/config/application.properties
+++ b/src/main/resources/config/application.properties
@@ -15,3 +15,5 @@ isis.persistence.jdo-datanucleus.impl.javax.jdo.option.ConnectionURL = jdbc:h2:m
isis.persistence.jdo-datanucleus.impl.javax.jdo.option.ConnectionDriverName = org.h2.Driver
isis.persistence.jdo-datanucleus.impl.javax.jdo.option.ConnectionUserName = sa
isis.persistence.jdo-datanucleus.impl.javax.jdo.option.ConnectionPassword =
+
+isis.persistence.jdo-datanucleus.impl.datanucleus.schema.autoCreateAll=true
\ No newline at end of file
diff --git a/src/main/resources/log4j2-spring.xml b/src/main/resources/log4j2-spring.xml
index 08a5edb..62d6ae5 100644
--- a/src/main/resources/log4j2-spring.xml
+++ b/src/main/resources/log4j2-spring.xml
@@ -1,42 +1,44 @@
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
- <Properties>
- <Property name="PID">????</Property>
- <Property name="LOG_EXCEPTION_CONVERSION_WORD">%xwEx</Property>
- <Property name="LOG_LEVEL_PATTERN">%5p</Property>
- <Property name="LOG_DATEFORMAT_PATTERN">yyyy-MM-dd HH:mm:ss.SSS</Property>
- <Property name="CONSOLE_LOG_PATTERN">%clr{%d{${LOG_DATEFORMAT_PATTERN}}}{faint} %clr{${LOG_LEVEL_PATTERN}} %clr{${sys:PID}}{magenta} %clr{---}{faint} %clr{[%15.15t]}{faint} %clr{%-40.40c{1.}}{cyan} %clr{:}{faint} %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD}</Property>
- <Property name="FILE_LOG_PATTERN">%d{${LOG_DATEFORMAT_PATTERN}} ${LOG_LEVEL_PATTERN} ${sys:PID} --- [%t] %-40.40c{1.} : %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD}</Property>
- </Properties>
- <Appenders>
- <Console name="Console" target="SYSTEM_OUT" follow="true">
- <PatternLayout pattern="${sys:CONSOLE_LOG_PATTERN}" />
- </Console>
- </Appenders>
- <Loggers>
-
- <!-- silence Wicket -->
- <Logger name="org.apache.wicket.page.PartialPageUpdate" level="error" />
-
- <Logger name="org.apache.catalina.startup.DigesterFactory" level="error" />
- <Logger name="org.apache.catalina.util.LifecycleBase" level="error" />
- <Logger name="org.apache.coyote.http11.Http11NioProtocol" level="warn" />
- <logger name="org.apache.sshd.common.util.SecurityUtils" level="warn"/>
- <Logger name="org.apache.tomcat.util.net.NioSelectorPool" level="warn" />
- <Logger name="org.eclipse.jetty.util.component.AbstractLifeCycle" level="error" />
- <Logger name="org.hibernate.validator.internal.util.Version" level="warn" />
- <logger name="org.springframework.boot.actuate.endpoint.jmx" level="warn"/>
-
- <logger name="org.apache.directory" level="warn"/>
- <logger name="org.apache.directory.api.ldap.model.entry.Value" level="off"/>
-
- <logger name="DataNucleus.Persistence" level="info"/>
- <logger name="DataNucleus.Transaction" level="info"/>
- <logger name="DataNucleus.Datastore.Schema" level="info"/>
- <logger name="DataNucleus.Datastore.Native" level="info"/>
-
- <Root level="info">
- <AppenderRef ref="Console" />
- </Root>
- </Loggers>
+ <Properties>
+ <Property name="PID">????</Property>
+ <Property name="LOG_EXCEPTION_CONVERSION_WORD">%xwEx</Property>
+ <Property name="LOG_LEVEL_PATTERN">%5p</Property>
+ <Property name="LOG_DATEFORMAT_PATTERN">yyyy-MM-dd HH:mm:ss.SSS</Property>
+ <Property name="CONSOLE_LOG_PATTERN">%clr{%d{${LOG_DATEFORMAT_PATTERN}}}{faint} %clr{${LOG_LEVEL_PATTERN}} %clr{${sys:PID}}{magenta} %clr{---}{faint} %clr{[%15.15t]}{faint} %clr{%-40.40c{1.}}{cyan} %clr{:}{faint} %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD}</Property>
+ <Property name="FILE_LOG_PATTERN">%d{${LOG_DATEFORMAT_PATTERN}} ${LOG_LEVEL_PATTERN} ${sys:PID} --- [%t] %-40.40c{1.} : %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD}</Property>
+ </Properties>
+ <Appenders>
+ <Console name="Console" target="SYSTEM_OUT" follow="true">
+ <PatternLayout pattern="${sys:CONSOLE_LOG_PATTERN}" />
+ </Console>
+ </Appenders>
+ <Loggers>
+
+ <!-- silence Wicket -->
+ <Logger name="org.apache.wicket.page.PartialPageUpdate" level="error" />
+
+ <Logger name="org.apache.catalina.startup.DigesterFactory" level="error" />
+ <Logger name="org.apache.catalina.util.LifecycleBase" level="error" />
+ <Logger name="org.apache.coyote.http11.Http11NioProtocol" level="warn" />
+ <logger name="org.apache.sshd.common.util.SecurityUtils" level="warn"/>
+ <Logger name="org.apache.tomcat.util.net.NioSelectorPool" level="warn" />
+ <Logger name="org.eclipse.jetty.util.component.AbstractLifeCycle" level="error" />
+ <Logger name="org.hibernate.validator.internal.util.Version" level="warn" />
+ <logger name="org.springframework.boot.actuate.endpoint.jmx" level="warn"/>
+
+ <logger name="org.apache.directory" level="warn"/>
+ <logger name="org.apache.directory.api.ldap.model.entry.Value" level="off"/>
+
+ <logger name="DataNucleus.Persistence" level="info"/>
+ <logger name="DataNucleus.Transaction" level="info"/>
+ <logger name="DataNucleus.Datastore.Schema" level="info"/>
+ <logger name="DataNucleus.Datastore.Native" level="info"/>
+
+ <logger name="org.apache.isis.applib.services.publish.PublisherServiceLogging" level="debug"/>
+
+ <Root level="info">
+ <AppenderRef ref="Console" />
+ </Root>
+ </Loggers>
</Configuration>
diff --git a/src/main/java/domainapp/webapp/application/menubars.layout.xml b/src/main/resources/menubars.layout.xml
similarity index 82%
rename from src/main/java/domainapp/webapp/application/menubars.layout.xml
rename to src/main/resources/menubars.layout.xml
index 0c02509..98c69b4 100644
--- a/src/main/java/domainapp/webapp/application/menubars.layout.xml
+++ b/src/main/resources/menubars.layout.xml
@@ -4,13 +4,13 @@
<mb3:menu>
<mb3:named>Hello World Objects</mb3:named>
<mb3:section>
- <mb3:serviceAction objectType="helloworld.HelloWorldObjects" id="create">
+ <mb3:serviceAction objectType="hello.HelloWorldObjects" id="create">
<cpt:named>Create</cpt:named>
</mb3:serviceAction>
- <mb3:serviceAction objectType="helloworld.HelloWorldObjects" id="findByName">
+ <mb3:serviceAction objectType="hello.HelloWorldObjects" id="findByName">
<cpt:named>Find By Name</cpt:named>
</mb3:serviceAction>
- <mb3:serviceAction objectType="helloworld.HelloWorldObjects" id="listAll">
+ <mb3:serviceAction objectType="hello.HelloWorldObjects" id="listAll">
<cpt:named>List All</cpt:named>
</mb3:serviceAction>
</mb3:section>
@@ -23,17 +23,6 @@
<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>
diff --git a/src/main/webapp/META-INF/context.xml b/src/main/webapp/META-INF/context.xml
deleted file mode 100644
index fd2fac1..0000000
--- a/src/main/webapp/META-INF/context.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Context path=""/>
diff --git a/src/test/java/domainapp/modules/hello/dom/hwo/HellWorldObjects_Test.java b/src/test/java/domainapp/modules/hello/dom/hwo/HellWorldObjects_Test.java
new file mode 100644
index 0000000..82e2b6e
--- /dev/null
+++ b/src/test/java/domainapp/modules/hello/dom/hwo/HellWorldObjects_Test.java
@@ -0,0 +1,79 @@
+package domainapp.modules.hello.dom.hwo;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.ArgumentMatcher;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+import org.mockito.stubbing.Answer;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.ArgumentMatchers.argThat;
+import static org.mockito.Mockito.when;
+
+import org.apache.isis.applib.services.repository.RepositoryService;
+import org.apache.isis.persistence.jdo.applib.services.IsisJdoSupport_v3_2;
+
+@ExtendWith(MockitoExtension.class)
+class HellWorldObjects_Test {
+
+ @Mock RepositoryService mockRepositoryService;
+ @Mock IsisJdoSupport_v3_2 mockIsisJdoSupport_v3_2;
+
+ HelloWorldObjects objects;
+
+ @BeforeEach
+ public void setUp() {
+ objects = new HelloWorldObjects(mockRepositoryService, mockIsisJdoSupport_v3_2);
+ }
+
+ @Nested
+ class create {
+
+ @Test
+ void happyCase() {
+
+ // given
+ final String someName = "Foobar";
+
+ // expect
+ when(mockRepositoryService.persist(
+ argThat((ArgumentMatcher<HelloWorldObject>) simpleObject -> Objects.equals(simpleObject.getName(), someName)))
+ ).then((Answer<HelloWorldObject>) invocation -> invocation.getArgument(0));
+
+ // when
+ final HelloWorldObject obj = objects.create(someName);
+
+ // then
+ assertThat(obj).isNotNull();
+ assertThat(obj.getName()).isEqualTo(someName);
+ }
+ }
+
+ @Nested
+ class ListAll {
+
+ @Test
+ void happyCase() {
+
+ // given
+ final List<HelloWorldObject> all = new ArrayList<>();
+
+ // expecting
+ when(mockRepositoryService.allInstances(HelloWorldObject.class))
+ .thenReturn(all);
+
+ // when
+ final List<HelloWorldObject> list = objects.listAll();
+
+ // then
+ assertThat(list).isEqualTo(all);
+ }
+ }
+}
diff --git a/src/test/java/domainapp/modules/hello/dom/hwo/HelloWorldObject_Test.java b/src/test/java/domainapp/modules/hello/dom/hwo/HelloWorldObject_Test.java
new file mode 100644
index 0000000..fa236a5
--- /dev/null
+++ b/src/test/java/domainapp/modules/hello/dom/hwo/HelloWorldObject_Test.java
@@ -0,0 +1,71 @@
+package domainapp.modules.hello.dom.hwo;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import org.apache.isis.applib.services.message.MessageService;
+import org.apache.isis.applib.services.repository.RepositoryService;
+import org.apache.isis.applib.services.title.TitleService;
+
+@ExtendWith(MockitoExtension.class)
+class HelloWorldObject_Test {
+
+ @Mock TitleService mockTitleService;
+ @Mock MessageService mockMessageService;
+ @Mock RepositoryService mockRepositoryService;
+
+ HelloWorldObject object;
+
+ @BeforeEach
+ void setup() {
+ object = new HelloWorldObject("Foo");
+ object.titleService = mockTitleService;
+ object.messageService = mockMessageService;
+ object.repositoryService = mockRepositoryService;
+ }
+
+ @Nested
+ public class updateName {
+
+ @Test
+ void happy_case() {
+ // given
+ assertThat(object.getName()).isEqualTo("Foo");
+
+ // when
+ object.updateName("Bar");
+
+ // then
+ assertThat(object.getName()).isEqualTo("Bar");
+ }
+
+ }
+ @Nested
+ class delete {
+
+ @Test
+ void happy_case() throws Exception {
+
+ // given
+ assertThat(object).isNotNull();
+
+ // expecting
+ when(mockTitleService.titleOf(object)).thenReturn("Foo");
+
+ // when
+ object.delete();
+
+ // then
+ verify(mockMessageService).informUser("'Foo' deleted");
+ verify(mockRepositoryService).removeAndFlush(object);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/domainapp/modules/hello/dom/impl/HelloWorldObject_delete_Test.java b/src/test/java/domainapp/modules/hello/dom/impl/HelloWorldObject_delete_Test.java
deleted file mode 100644
index bfdc6c9..0000000
--- a/src/test/java/domainapp/modules/hello/dom/impl/HelloWorldObject_delete_Test.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package domainapp.modules.hello.dom.impl;
-
-import domainapp.modules.hello.dom.impl.HelloWorldObject;
-
-import org.jmock.Expectations;
-import org.jmock.auto.Mock;
-import org.junit.Rule;
-import org.junit.Test;
-
-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 org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
-
-import static org.hamcrest.CoreMatchers.containsString;
-
-public class HelloWorldObject_delete_Test {
-
- @Rule
- public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(JUnitRuleMockery2.Mode.INTERFACES_AND_CLASSES);
-
- @Mock
- TitleService mockTitleService;
-
- @Mock
- MessageService mockMessageService;
-
- @Mock
- RepositoryService mockRepositoryService;
-
- @Test
- public void happy_case() throws Exception {
-
- // given
- final HelloWorldObject object = new HelloWorldObject("Foo");
- object.titleService = mockTitleService;
- object.messageService = mockMessageService;
- object.repositoryService = mockRepositoryService;
-
- // expecting
- context.checking(new Expectations() {{
- allowing(mockTitleService).titleOf(object); will(returnValue("Foo"));
-
- oneOf(mockMessageService).informUser(with(containsString("'Foo' deleted")));
- oneOf(mockRepositoryService).removeAndFlush(object);
- }});
-
- // when
- object.delete();
- }
-
-
-}
\ No newline at end of file
diff --git a/src/test/java/domainapp/modules/hello/dom/impl/HelloWorldObject_updateName_Test.java b/src/test/java/domainapp/modules/hello/dom/impl/HelloWorldObject_updateName_Test.java
deleted file mode 100644
index 8090163..0000000
--- a/src/test/java/domainapp/modules/hello/dom/impl/HelloWorldObject_updateName_Test.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package domainapp.modules.hello.dom.impl;
-
-import domainapp.modules.hello.dom.impl.HelloWorldObject;
-
-import org.junit.Test;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-public class HelloWorldObject_updateName_Test {
-
- @Test
- public void happy_case() throws Exception {
- // given
- final HelloWorldObject object = new HelloWorldObject("Foo");
- assertThat(object.getName()).isEqualTo("Foo");
-
- // when
- object.updateName("Bar");
-
- // then
- assertThat(object.getName()).isEqualTo("Bar");
- }
-
-}
\ No newline at end of file