You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@causeway.apache.org by da...@apache.org on 2026/08/29 11:51:13 UTC
(causeway-app-petclinic) 01/04: Remove simple modules from petclinic app
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch socrates-de
in repository https://gitbox.apache.org/repos/asf/causeway-app-petclinic.git
commit d99e58ddff47cbeb12eab28a831794f989aa9fb2
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Sat Aug 29 13:28:50 2026 +0200
Remove simple modules from petclinic app
---
README.adoc | 26 +--
module-simple-tests/.gitignore | 8 -
module-simple-tests/log4j2-test.xml | 60 ------
module-simple-tests/pom.xml | 79 -------
.../modules/simple/dom/so/SimpleObject_Test.java | 71 -------
.../modules/simple/dom/so/SimpleObjects_Test.java | 80 -------
.../integtests/SimpleModuleIntegTestAbstract.java | 50 -----
.../integtests/tests/SimpleObject_IntegTest.java | 86 --------
.../integtests/tests/SimpleObjects_IntegTest.java | 113 ----------
.../src/test/resources/application-test.yml | 4 -
module-simple/.gitignore | 8 -
module-simple/pom.xml | 77 -------
.../domainapp/modules/simple/SimpleModule.java | 43 ----
.../simple/dom/so/SimpleObject.columnOrder.txt | 3 -
.../modules/simple/dom/so/SimpleObject.java | 235 ---------------------
.../modules/simple/dom/so/SimpleObject.layout.xml | 55 -----
.../modules/simple/dom/so/SimpleObject.png | Bin 653 -> 0 bytes
.../simple/dom/so/SimpleObjectRepository.java | 13 --
.../modules/simple/dom/so/SimpleObjects.java | 89 --------
.../simple/fixture/SimpleObject_persona.java | 107 ----------
.../java/domainapp/modules/simple/types/Name.java | 20 --
.../java/domainapp/modules/simple/types/Notes.java | 25 ---
.../domainapp/modules/simple/fixture/Bang.docx | Bin 13071 -> 0 bytes
.../domainapp/modules/simple/fixture/Bang.pdf | Bin 48548 -> 0 bytes
.../domainapp/modules/simple/fixture/Bar.docx | Bin 12936 -> 0 bytes
.../domainapp/modules/simple/fixture/Bar.pdf | Bin 47488 -> 0 bytes
.../domainapp/modules/simple/fixture/Fizz.docx | Bin 12869 -> 0 bytes
.../domainapp/modules/simple/fixture/Fizz.pdf | Bin 46833 -> 0 bytes
.../domainapp/modules/simple/fixture/Foo.docx | Bin 13069 -> 0 bytes
.../domainapp/modules/simple/fixture/Foo.pdf | Bin 47185 -> 0 bytes
.../domainapp/modules/simple/fixture/Frodo.docx | Bin 12969 -> 0 bytes
.../domainapp/modules/simple/fixture/Frodo.pdf | Bin 47587 -> 0 bytes
pom.xml | 14 --
setver.sh | 2 -
.../webapp/integtests/WebAppIntegTestAbstract.java | 5 +-
.../webapp/integtests/smoke/Smoke_IntegTest.java | 52 +----
.../src/test/resources/application-test.yml | 2 +-
webapp/pom.xml | 6 +-
.../webapp/application/ApplicationModule.java | 3 +-
.../application/seed/CustomRolesAndUsers.java | 22 +-
.../services/health/HealthCheckServiceImpl.java | 10 +-
.../services/homepage/HomePageViewModel.java | 4 +-
.../webapp/custom/restapi/CustomController.java | 14 +-
.../domainapp/webapp/quartz/job/SampleJob.java | 16 +-
webapp/src/main/resources/application.yml | 4 +-
.../main/resources/config/application.properties | 2 +-
.../V2020.01.20.14.10__create_schema_simple.sql | 8 -
....20.14.14__create_table_simple_SimpleObject.sql | 25 ---
webapp/src/main/resources/menubars.layout.xml | 9 -
webapp/src/main/resources/shiro.ini | 18 +-
50 files changed, 54 insertions(+), 1414 deletions(-)
diff --git a/README.adoc b/README.adoc
index 3a221be..f37b114 100644
--- a/README.adoc
+++ b/README.adoc
@@ -108,18 +108,14 @@ The following table explains the contents of each of the directories:
|`module-petowner`
|Holds the "petowner" module, consisting of the `PetOwner` entity and supporting services.
-|`module-simple`
-|Holds the "simple" module, consisting of the `SimpleObject` entity and supporting services.
+|`module-visit`
+|Holds the "visit" module, consisting of the `Visit` entity and supporting services.
[TIP]
====
-Larger applications should consist of multiple modules; each such module can be copied from this starter module.
+Larger applications should consist of multiple modules, such as the pet owner and visit modules in this application.
====
-|`module-simple-tests`
-|Holds the unit- and integration tests for `module-simple`.
-
-
|`webapp`
|Holds the bootstrapping classes, along with application-level scoped services and home page.
@@ -130,7 +126,7 @@ The `pom.xml` also provides goals to run the app from the command line, or to be
|====================
-It's more common for tests to reside within the same module, but we moved them into their own Maven modules because it makes them easier to be temporarily excluded, eg during initial explorations/prototyping.
+Module-specific tests reside within their module, while application-wide integration tests reside in `webapp-tests`.
[#orm-support]
@@ -160,20 +156,6 @@ Change "XXX" to the value that `${spring-framework.version}` resolves to in the
-//This version of the application uses DataNucleus as its ORM, which requires that any entities are "enhanced", a post-compile process.
-//
-//Normally this is done as part of a "mvn clean install", but the entities can also be enhanced explicity using:
-//
-//[source,bash]
-//----
-//mvn -pl module-simple datanucleus:enhance -o
-//----
-//
-//This is useful to know if the application or integration test fails to bootstrap, complaining of "unenhanced entities".
-//
-//TIP: You can also use `enhance-all.sh`
-
-
== Testing
The application has both unit tests and integration tests.
diff --git a/module-simple-tests/.gitignore b/module-simple-tests/.gitignore
deleted file mode 100644
index 85cb54f..0000000
--- a/module-simple-tests/.gitignore
+++ /dev/null
@@ -1,8 +0,0 @@
-.gradle
-translations.pot
-*.jar
-gradle/wrapper
-!gradle-wrapper.jar
-/.apt_generated/
-/.factorypath
-/.apt_generated_tests/
diff --git a/module-simple-tests/log4j2-test.xml b/module-simple-tests/log4j2-test.xml
deleted file mode 100644
index 1d50129..0000000
--- a/module-simple-tests/log4j2-test.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<?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>
- <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>
-</Configuration>
-
-<!-- # DataNucleus Logging Categories -->
-<!-- DataNucleus.Persistence - All messages relating to the persistence process -->
-<!-- DataNucleus.Transaction - All messages relating to transactions -->
-<!-- DataNucleus.Connection - All messages relating to Connections. -->
-<!-- DataNucleus.Query - All messages relating to queries -->
-<!-- DataNucleus.Cache - All messages relating to the DataNucleus Cache -->
-<!-- DataNucleus.MetaData - All messages relating to MetaData -->
-<!-- DataNucleus.Datastore - All general datastore messages -->
-<!-- DataNucleus.Datastore.Schema - All schema related datastore log messages -->
-<!-- DataNucleus.Datastore.Persist - All datastore persistence messages -->
-<!-- DataNucleus.Datastore.Retrieve - All datastore retrieval messages -->
-<!-- DataNucleus.Datastore.Native - Log of all 'native' statements sent to the datastore -->
-<!-- DataNucleus.General - All general operational messages -->
-<!-- DataNucleus.Lifecycle - All messages relating to object lifecycle changes -->
-<!-- DataNucleus.ValueGeneration - All messages relating to value generation -->
-<!-- DataNucleus.Enhancer - All messages from the DataNucleus Enhancer. -->
-<!-- DataNucleus.SchemaTool - All messages from DataNucleus SchemaTool -->
-<!-- DataNucleus.JDO - All messages general to JDO -->
-<!-- DataNucleus.JPA - All messages general to JPA -->
-<!-- DataNucleus.JCA - All messages relating to Connector JCA. -->
-<!-- DataNucleus.IDE - Messages from the DataNucleus IDE. -->
\ No newline at end of file
diff --git a/module-simple-tests/pom.xml b/module-simple-tests/pom.xml
deleted file mode 100644
index bea2d3b..0000000
--- a/module-simple-tests/pom.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <artifactId>simpleapp-jpa</artifactId>
- <groupId>org.apache.causeway.starters</groupId>
- <version>3.5.0</version>
- </parent>
-
- <artifactId>simpleapp-jpa-module-simple-tests</artifactId>
- <name>SimpleApp (JPA) - Simple Module (tests)</name>
-
- <description>
- Integ tests for 'simple module'
- </description>
-
- <build>
- <testResources>
- <testResource>
- <directory>src/test/resources</directory>
- </testResource>
- <testResource>
- <filtering>false</filtering>
- <directory>src/test/java</directory>
- <includes>
- <include>**</include>
- </includes>
- <excludes>
- <exclude>**/*.java</exclude>
- </excludes>
- </testResource>
- </testResources>
- </build>
-
- <dependencies>
-
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>simpleapp-jpa-module-simple</artifactId>
- </dependency>
-
- <!-- TESTS -->
-
- <dependency>
- <groupId>org.apache.causeway.testing</groupId>
- <artifactId>causeway-testing-unittestsupport-applib</artifactId>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>org.apache.causeway.testing</groupId>
- <artifactId>causeway-testing-fakedata-applib</artifactId>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>org.apache.causeway.testing</groupId>
- <artifactId>causeway-testing-integtestsupport-applib</artifactId>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>org.apache.causeway.testing</groupId>
- <artifactId>causeway-testing-fixtures-applib</artifactId>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>org.apache.causeway.persistence</groupId>
- <artifactId>causeway-persistence-jpa-eclipselink</artifactId>
- <scope>test</scope>
- </dependency>
-
- </dependencies>
-
-</project>
diff --git a/module-simple-tests/src/test/java/domainapp/modules/simple/dom/so/SimpleObject_Test.java b/module-simple-tests/src/test/java/domainapp/modules/simple/dom/so/SimpleObject_Test.java
deleted file mode 100644
index e0f7a64..0000000
--- a/module-simple-tests/src/test/java/domainapp/modules/simple/dom/so/SimpleObject_Test.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package domainapp.modules.simple.dom.so;
-
-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.causeway.applib.services.message.MessageService;
-import org.apache.causeway.applib.services.repository.RepositoryService;
-import org.apache.causeway.applib.services.title.TitleService;
-
-@ExtendWith(MockitoExtension.class)
-class SimpleObject_Test {
-
- @Mock TitleService mockTitleService;
- @Mock MessageService mockMessageService;
- @Mock RepositoryService mockRepositoryService;
-
- SimpleObject object;
-
- @BeforeEach
- public void setUp() throws Exception {
- object = SimpleObject.withName("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);
- }
- }
-}
diff --git a/module-simple-tests/src/test/java/domainapp/modules/simple/dom/so/SimpleObjects_Test.java b/module-simple-tests/src/test/java/domainapp/modules/simple/dom/so/SimpleObjects_Test.java
deleted file mode 100644
index 67f3093..0000000
--- a/module-simple-tests/src/test/java/domainapp/modules/simple/dom/so/SimpleObjects_Test.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package domainapp.modules.simple.dom.so;
-
-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.causeway.applib.services.repository.RepositoryService;
-import org.apache.causeway.persistence.jpa.applib.services.JpaSupportService;
-
-@ExtendWith(MockitoExtension.class)
-class SimpleObjects_Test {
-
- @Mock RepositoryService mockRepositoryService;
- @Mock JpaSupportService mockJpaSupportService;
- @Mock SimpleObjectRepository mockSimpleObjectRepository;
-
- SimpleObjects objects;
-
- @BeforeEach
- public void setUp() {
- objects = new SimpleObjects(mockRepositoryService, mockJpaSupportService, mockSimpleObjectRepository);
- }
-
- @Nested
- class create {
-
- @Test
- void happyCase() {
-
- // given
- final String someName = "Foobar";
-
- // expect
- when(mockRepositoryService.persist(
- argThat((ArgumentMatcher<SimpleObject>) simpleObject -> Objects.equals(simpleObject.getName(), someName)))
- ).then((Answer<SimpleObject>) invocation -> invocation.getArgument(0));
-
- // when
- final SimpleObject obj = objects.create(someName);
-
- // then
- assertThat(obj).isNotNull();
- assertThat(obj.getName()).isEqualTo(someName);
- }
- }
-
- @Nested
- class ListAll {
-
- @Test
- void happyCase() {
-
- // given
- final List<SimpleObject> all = new ArrayList<>();
-
- // expecting
- when(mockSimpleObjectRepository.findAll())
- .thenReturn(all);
-
- // when
- final List<SimpleObject> list = objects.listAll();
-
- // then
- assertThat(list).isEqualTo(all);
- }
- }
-}
diff --git a/module-simple-tests/src/test/java/domainapp/modules/simple/integtests/SimpleModuleIntegTestAbstract.java b/module-simple-tests/src/test/java/domainapp/modules/simple/integtests/SimpleModuleIntegTestAbstract.java
deleted file mode 100644
index 2b7b66d..0000000
--- a/module-simple-tests/src/test/java/domainapp/modules/simple/integtests/SimpleModuleIntegTestAbstract.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package domainapp.modules.simple.integtests;
-
-import org.springframework.boot.SpringBootConfiguration;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.context.annotation.Import;
-import org.springframework.context.annotation.PropertySource;
-import org.springframework.context.annotation.PropertySources;
-import org.springframework.test.context.ActiveProfiles;
-
-import org.apache.causeway.core.config.presets.CausewayPresets;
-import org.apache.causeway.core.runtimeservices.CausewayModuleCoreRuntimeServices;
-import org.apache.causeway.persistence.jpa.eclipselink.CausewayModulePersistenceJpaEclipselink;
-import org.apache.causeway.security.bypass.CausewayModuleSecurityBypass;
-import org.apache.causeway.testing.fixtures.applib.CausewayIntegrationTestAbstractWithFixtures;
-import org.apache.causeway.testing.fixtures.applib.CausewayModuleTestingFixturesApplib;
-
-import domainapp.modules.simple.SimpleModule;
-
-
-@SpringBootTest(
- classes = SimpleModuleIntegTestAbstract.TestApp.class
-)
-@ActiveProfiles("test")
-public abstract class SimpleModuleIntegTestAbstract extends CausewayIntegrationTestAbstractWithFixtures {
-
- /**
- * Compared to the production app manifest <code>domainapp.webapp.AppManifest</code>,
- * here we in effect disable security checks, and we exclude any web/UI modules.
- */
- @SpringBootConfiguration
- @EnableAutoConfiguration
- @Import({
-
- CausewayModuleCoreRuntimeServices.class,
- CausewayModuleSecurityBypass.class,
- CausewayModulePersistenceJpaEclipselink.class,
- CausewayModuleTestingFixturesApplib.class,
-
- SimpleModule.class
- })
- @PropertySources({
- @PropertySource(CausewayPresets.H2InMemory_withUniqueSchema),
- @PropertySource(CausewayPresets.UseLog4j2Test),
- })
- public static class TestApp {
-
- }
-
-}
diff --git a/module-simple-tests/src/test/java/domainapp/modules/simple/integtests/tests/SimpleObject_IntegTest.java b/module-simple-tests/src/test/java/domainapp/modules/simple/integtests/tests/SimpleObject_IntegTest.java
deleted file mode 100644
index 4aad82e..0000000
--- a/module-simple-tests/src/test/java/domainapp/modules/simple/integtests/tests/SimpleObject_IntegTest.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package domainapp.modules.simple.integtests.tests;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.jupiter.api.Assertions.assertThrows;
-
-import org.springframework.transaction.annotation.Transactional;
-
-import org.apache.causeway.applib.services.wrapper.DisabledException;
-import org.apache.causeway.applib.services.wrapper.InvalidException;
-
-import domainapp.modules.simple.dom.so.SimpleObject;
-import domainapp.modules.simple.fixture.SimpleObject_persona;
-import domainapp.modules.simple.integtests.SimpleModuleIntegTestAbstract;
-
-@Transactional
-public class SimpleObject_IntegTest extends SimpleModuleIntegTestAbstract {
-
- SimpleObject simpleObject;
-
- @BeforeEach
- public void setUp() {
- // given
- simpleObject = fixtureScripts.runPersona(SimpleObject_persona.FOO);
- }
-
-
- @Nested
- public static class name extends SimpleObject_IntegTest {
-
- @Test
- public void accessible() {
- // when
- final String name = wrap(simpleObject).getName();
-
- // then
- assertThat(name).isEqualTo(simpleObject.getName());
- }
-
- @Test
- public void not_editable() {
-
- // expect
- assertThrows(DisabledException.class, ()->{
-
- // when
- wrap(simpleObject).setName("new name");
- });
- }
-
- }
-
- @Nested
- public static class updateName extends SimpleObject_IntegTest {
-
-
- @Test
- public void can_be_updated_directly() {
-
- // when
- wrap(simpleObject).updateName("new name");
- transactionService.flushTransaction();
-
- // then
- assertThat(wrap(simpleObject).getName()).isEqualTo("new name");
- }
-
- @Test
- public void fails_validation() {
-
- // expect
- InvalidException cause = assertThrows(InvalidException.class, ()->{
-
- // when
- wrap(simpleObject).updateName("new name!");
- });
-
- // then
- assertThat(cause.getMessage()).contains("Character '!' is not allowed");
- }
- }
-
-}
diff --git a/module-simple-tests/src/test/java/domainapp/modules/simple/integtests/tests/SimpleObjects_IntegTest.java b/module-simple-tests/src/test/java/domainapp/modules/simple/integtests/tests/SimpleObjects_IntegTest.java
deleted file mode 100644
index 3119a6a..0000000
--- a/module-simple-tests/src/test/java/domainapp/modules/simple/integtests/tests/SimpleObjects_IntegTest.java
+++ /dev/null
@@ -1,113 +0,0 @@
-package domainapp.modules.simple.integtests.tests;
-
-import java.util.List;
-
-import jakarta.inject.Inject;
-import jakarta.persistence.RollbackException;
-
-import org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException;
-import org.hamcrest.MatcherAssert;
-import org.junit.jupiter.api.Nested;
-import org.junit.jupiter.api.Test;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.jupiter.api.Assertions.assertThrows;
-
-import org.springframework.dao.DuplicateKeyException;
-import org.springframework.transaction.annotation.Propagation;
-import org.springframework.transaction.annotation.Transactional;
-
-import org.apache.causeway.applib.services.iactnlayer.InteractionService;
-import org.apache.causeway.commons.functional.Try;
-import org.apache.causeway.testing.unittestsupport.applib.matchers.ThrowableMatchers;
-
-import lombok.val;
-
-import domainapp.modules.simple.dom.so.SimpleObject;
-import domainapp.modules.simple.dom.so.SimpleObjects;
-import domainapp.modules.simple.fixture.SimpleObject_persona;
-import domainapp.modules.simple.integtests.SimpleModuleIntegTestAbstract;
-
-@Transactional
-public class SimpleObjects_IntegTest extends SimpleModuleIntegTestAbstract {
-
- @Inject
- SimpleObjects menu;
-
- @Nested
- public static class listAll extends SimpleObjects_IntegTest {
-
- @Test
- public void happyCase() {
-
- // given
- fixtureScripts.run(new SimpleObject_persona.PersistAll());
- transactionService.flushTransaction();
-
- // when
- final List<SimpleObject> all = wrap(menu).listAll();
-
- // then
- assertThat(all).hasSize(SimpleObject_persona.values().length);
- }
-
- @Test
- public void whenNone() {
-
- // when
- final List<SimpleObject> all = wrap(menu).listAll();
-
- // then
- assertThat(all).hasSize(0);
- }
- }
-
- @Nested
- public static class create extends SimpleObjects_IntegTest {
-
- @Test
- public void happyCase() {
-
- wrap(menu).create("Faz");
-
- // then
- final List<SimpleObject> all = wrap(menu).listAll();
- assertThat(all).hasSize(1);
- }
-
- @Test
- public void whenAlreadyExists() {
-
- // given
- fixtureScripts.runPersona(SimpleObject_persona.FIZZ);
- interactionService.nextInteraction();
-
- // we execute this in its own transaction so that it can be discarded
- Try<Void> attempt = transactionService.runTransactional(Propagation.REQUIRES_NEW, () -> {
-
- // expect
- Throwable cause = assertThrows(Throwable.class, () -> {
- // when
- wrap(menu).create("Fizz");
- transactionService.flushTransaction();
- });
-
- // also expect
- MatcherAssert.assertThat(cause,
- ThrowableMatchers.causedBy(DuplicateKeyException.class));
- });
-
-
- // then
- assertThat(attempt.isFailure()).isTrue();
- val failureIfAny = attempt.getFailure();
- assertThat(failureIfAny).isPresent();
- assertThat(failureIfAny.get()).isInstanceOf(DuplicateKeyException.class);
- assertThat(failureIfAny.get().getCause()).isInstanceOf(JdbcSQLIntegrityConstraintViolationException.class);
-
- }
-
- }
-
- @Inject protected InteractionService interactionService;
-}
diff --git a/module-simple-tests/src/test/resources/application-test.yml b/module-simple-tests/src/test/resources/application-test.yml
deleted file mode 100644
index 8d13e94..0000000
--- a/module-simple-tests/src/test/resources/application-test.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-causeway:
- persistence:
- schema:
- auto-create-schemas: "simple"
diff --git a/module-simple/.gitignore b/module-simple/.gitignore
deleted file mode 100644
index 85cb54f..0000000
--- a/module-simple/.gitignore
+++ /dev/null
@@ -1,8 +0,0 @@
-.gradle
-translations.pot
-*.jar
-gradle/wrapper
-!gradle-wrapper.jar
-/.apt_generated/
-/.factorypath
-/.apt_generated_tests/
diff --git a/module-simple/pom.xml b/module-simple/pom.xml
deleted file mode 100644
index c8bac44..0000000
--- a/module-simple/pom.xml
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <artifactId>simpleapp-jpa</artifactId>
- <groupId>org.apache.causeway.starters</groupId>
- <version>3.5.0</version>
- </parent>
-
- <artifactId>simpleapp-jpa-module-simple</artifactId>
- <name>SimpleApp (JPA) - Simple Module</name>
-
- <build>
- <resources>
- <resource>
- <directory>src/main/resources</directory>
- </resource>
- <resource>
- <filtering>false</filtering>
- <directory>src/main/java</directory>
- <includes>
- <include>**</include>
- </includes>
- <excludes>
- <exclude>**/*.java</exclude>
- </excludes>
- </resource>
- </resources>
- </build>
-
- <dependencies>
-
- <!-- CAUSEWAY API -->
-
- <dependency>
- <groupId>org.apache.causeway.core</groupId>
- <artifactId>causeway-applib</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.apache.causeway.testing</groupId>
- <artifactId>causeway-testing-fakedata-applib</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.apache.causeway.extensions</groupId>
- <artifactId>causeway-extensions-fullcalendar-applib</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.apache.causeway.extensions</groupId>
- <artifactId>causeway-extensions-pdfjs-applib</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.apache.causeway.persistence</groupId>
- <artifactId>causeway-persistence-jpa-applib</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.apache.causeway.testing</groupId>
- <artifactId>causeway-testing-fixtures-applib</artifactId>
- </dependency>
-
- <!-- IDE support (optional) -->
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-configuration-processor</artifactId>
- <optional>true</optional>
- </dependency>
-
- </dependencies>
-
-</project>
diff --git a/module-simple/src/main/java/domainapp/modules/simple/SimpleModule.java b/module-simple/src/main/java/domainapp/modules/simple/SimpleModule.java
deleted file mode 100644
index 49aaf5b..0000000
--- a/module-simple/src/main/java/domainapp/modules/simple/SimpleModule.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package domainapp.modules.simple;
-
-import org.springframework.boot.autoconfigure.domain.EntityScan;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Import;
-import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
-
-import org.apache.causeway.extensions.fullcalendar.applib.CausewayModuleExtFullCalendarApplib;
-import org.apache.causeway.extensions.pdfjs.applib.CausewayModuleExtPdfjsApplib;
-import org.apache.causeway.persistence.jpa.applib.CausewayModulePersistenceJpaApplib;
-import org.apache.causeway.testing.fakedata.applib.CausewayModuleTestingFakeDataApplib;
-import org.apache.causeway.testing.fixtures.applib.fixturescripts.FixtureScript;
-import org.apache.causeway.testing.fixtures.applib.modules.ModuleWithFixtures;
-import org.apache.causeway.testing.fixtures.applib.teardown.jpa.TeardownFixtureJpaAbstract;
-
-import domainapp.modules.simple.dom.so.SimpleObject;
-
-@Configuration
-@Import({
- CausewayModuleExtPdfjsApplib.class,
- CausewayModuleExtFullCalendarApplib.class,
- CausewayModuleTestingFakeDataApplib.class,
- CausewayModulePersistenceJpaApplib.class,
-})
-@ComponentScan
-@EnableJpaRepositories
-@EntityScan(basePackageClasses = {SimpleModule.class})
-public class SimpleModule implements ModuleWithFixtures {
-
- public static final String NAMESPACE = "simple";
- public static final String SCHEMA = "simple";
-
- @Override
- public FixtureScript getTeardownFixture() {
- return new TeardownFixtureJpaAbstract() {
- @Override
- protected void execute(ExecutionContext executionContext) {
- deleteFrom(SimpleObject.class);
- }
- };
- }
-}
diff --git a/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleObject.columnOrder.txt b/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleObject.columnOrder.txt
deleted file mode 100644
index 5f3107a..0000000
--- a/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleObject.columnOrder.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-name
-lastCheckedIn
-#version
diff --git a/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleObject.java b/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleObject.java
deleted file mode 100644
index d0a5fa5..0000000
--- a/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleObject.java
+++ /dev/null
@@ -1,235 +0,0 @@
-package domainapp.modules.simple.dom.so;
-
-import java.time.LocalTime;
-import java.time.ZoneOffset;
-import java.util.Comparator;
-
-import jakarta.inject.Inject;
-import jakarta.inject.Named;
-import jakarta.persistence.AttributeOverride;
-import jakarta.persistence.AttributeOverrides;
-import jakarta.persistence.Column;
-import jakarta.persistence.Embedded;
-import jakarta.persistence.Entity;
-import jakarta.persistence.EntityListeners;
-import jakarta.persistence.GeneratedValue;
-import jakarta.persistence.GenerationType;
-import jakarta.persistence.Id;
-import jakarta.persistence.NamedQueries;
-import jakarta.persistence.NamedQuery;
-import jakarta.persistence.Table;
-import jakarta.persistence.Transient;
-import jakarta.persistence.UniqueConstraint;
-import jakarta.persistence.Version;
-import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
-
-import org.springframework.lang.Nullable;
-
-import org.apache.causeway.applib.annotation.Action;
-import org.apache.causeway.applib.annotation.ActionLayout;
-import org.apache.causeway.applib.annotation.BookmarkPolicy;
-import org.apache.causeway.applib.annotation.DomainObject;
-import org.apache.causeway.applib.annotation.DomainObjectLayout;
-import org.apache.causeway.applib.annotation.Editing;
-import org.apache.causeway.applib.annotation.MemberSupport;
-import org.apache.causeway.applib.annotation.Optionality;
-import org.apache.causeway.applib.annotation.PromptStyle;
-import org.apache.causeway.applib.annotation.Property;
-import org.apache.causeway.applib.annotation.PropertyLayout;
-import org.apache.causeway.applib.annotation.Publishing;
-import org.apache.causeway.applib.annotation.TableDecorator;
-import org.apache.causeway.applib.annotation.Title;
-import org.apache.causeway.applib.jaxb.PersistentEntityAdapter;
-import org.apache.causeway.applib.layout.LayoutConstants;
-import org.apache.causeway.applib.services.message.MessageService;
-import org.apache.causeway.applib.services.repository.RepositoryService;
-import org.apache.causeway.applib.services.title.TitleService;
-import org.apache.causeway.applib.value.Blob;
-import org.apache.causeway.extensions.fullcalendar.applib.CalendarEventable;
-import org.apache.causeway.extensions.fullcalendar.applib.value.CalendarEvent;
-import org.apache.causeway.extensions.pdfjs.applib.annotations.PdfJsViewer;
-import org.apache.causeway.persistence.jpa.applib.integration.CausewayEntityListener;
-import org.apache.causeway.persistence.jpa.applib.types.BlobJpaEmbeddable;
-
-import static org.apache.causeway.applib.annotation.SemanticsOf.IDEMPOTENT;
-import static org.apache.causeway.applib.annotation.SemanticsOf.NON_IDEMPOTENT_ARE_YOU_SURE;
-
-import lombok.AccessLevel;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.Setter;
-import lombok.ToString;
-import lombok.val;
-
-import domainapp.modules.simple.SimpleModule;
-import domainapp.modules.simple.types.Name;
-import domainapp.modules.simple.types.Notes;
-
-
-@Entity
-@Table(
- schema= SimpleModule.SCHEMA,
- uniqueConstraints = {
- @UniqueConstraint(name = "SimpleObject__name__UNQ", columnNames = {"name"})
- }
-)
-@NamedQueries({
- @NamedQuery(
- name = SimpleObject.NAMED_QUERY__FIND_BY_NAME_LIKE,
- query = "SELECT so " +
- "FROM SimpleObject so " +
- "WHERE so.name LIKE :name"
- )
-})
-@EntityListeners(CausewayEntityListener.class)
-@Named(SimpleModule.NAMESPACE + ".SimpleObject")
-@DomainObject(entityChangePublishing = Publishing.ENABLED)
-@DomainObjectLayout(
- tableDecorator = TableDecorator.DatatablesNet.class,
- bookmarking = BookmarkPolicy.AS_ROOT)
-@NoArgsConstructor(access = AccessLevel.PUBLIC)
-@XmlJavaTypeAdapter(PersistentEntityAdapter.class)
-@ToString(onlyExplicitlyIncluded = true)
-public class SimpleObject implements Comparable<SimpleObject>, CalendarEventable {
-
- static final String NAMED_QUERY__FIND_BY_NAME_LIKE = "SimpleObject.findByNameLike";
-
- @Id
- @GeneratedValue(strategy = GenerationType.AUTO)
- @Column(name = "id", nullable = false)
- private Long id;
-
- @Version
- @Column(name = "version", nullable = false)
- @PropertyLayout(fieldSetId = "metadata", sequence = "999")
- @Getter @Setter
- private long version;
-
- public static SimpleObject withName(final String name) {
- val simpleObject = new SimpleObject();
- simpleObject.setName(name);
- return simpleObject;
- }
-
- @Inject @Transient RepositoryService repositoryService;
- @Inject @Transient TitleService titleService;
- @Inject @Transient MessageService messageService;
-
-
-
- @Title
- @Name
- @Column(length = Name.MAX_LEN, nullable = false, name = "name")
- @Getter @Setter @ToString.Include
- @PropertyLayout(fieldSetId = LayoutConstants.FieldSetId.IDENTITY, sequence = "1")
- private String name;
-
- @Notes
- @Column(length = Notes.MAX_LEN, nullable = true)
- @Getter @Setter
- @Property(commandPublishing = Publishing.ENABLED, executionPublishing = Publishing.ENABLED)
- @PropertyLayout(fieldSetId = LayoutConstants.FieldSetId.DETAILS, sequence = "2")
- private String notes;
-
- @AttributeOverrides({
- @AttributeOverride(name="name", column=@Column(name="attachment_name")),
- @AttributeOverride(name="mimeType",column=@Column(name="attachment_mimeType")),
- @AttributeOverride(name="bytes", column=@Column(name="attachment_bytes"))
- })
- @Embedded
- private BlobJpaEmbeddable attachment;
-
- @PdfJsViewer
- @Property(optionality = Optionality.OPTIONAL)
- @PropertyLayout(fieldSetId = "content", sequence = "1")
- public Blob getAttachment() {
- return BlobJpaEmbeddable.toBlob(attachment);
- }
- public void setAttachment(final Blob attachment) {
- this.attachment = BlobJpaEmbeddable.fromBlob(attachment);
- }
-
-
-
- @Property(optionality = Optionality.OPTIONAL, editing = Editing.ENABLED)
- @PropertyLayout(fieldSetId = LayoutConstants.FieldSetId.DETAILS, sequence = "3")
- @Column(nullable = true)
- @Getter @Setter
- private java.time.LocalDate lastCheckedIn;
-
-
- @Override
- public String getCalendarName() {
- return "Last checked-in";
- }
-
- @Override
- public CalendarEvent toCalendarEvent() {
- if (getLastCheckedIn() != null) {
- long epochMillis = getLastCheckedIn().toEpochSecond(LocalTime.MIDNIGHT, ZoneOffset.systemDefault().getRules().getOffset(getLastCheckedIn().atStartOfDay())) * 1000L;
- return new CalendarEvent(epochMillis, getCalendarName(), titleService.titleOf(this), getNotes());
- } else {
- return null;
- }
- }
-
-
- @Action(semantics = IDEMPOTENT, commandPublishing = Publishing.ENABLED, executionPublishing = Publishing.ENABLED)
- @ActionLayout(
- associateWith = "name", promptStyle = PromptStyle.INLINE,
- describedAs = "Updates the name of this object, certain characters (" + PROHIBITED_CHARACTERS + ") are not allowed.")
- public SimpleObject updateName(
- @Name final String name) {
- setName(name);
- return this;
- }
- @MemberSupport public String default0UpdateName() {
- return getName();
- }
- @MemberSupport public String validate0UpdateName(final String newName) {
- for (char prohibitedCharacter : PROHIBITED_CHARACTERS.toCharArray()) {
- if( newName.contains(""+prohibitedCharacter)) {
- return "Character '" + prohibitedCharacter + "' is not allowed.";
- }
- }
- return null;
- }
- static final String PROHIBITED_CHARACTERS = "&%$!";
-
-
-
- @Action(semantics = IDEMPOTENT, commandPublishing = Publishing.ENABLED, executionPublishing = Publishing.ENABLED)
- @ActionLayout(associateWith = "attachment", position = ActionLayout.Position.PANEL)
- public SimpleObject updateAttachment(
- @Nullable final Blob attachment) {
- setAttachment(attachment);
- return this;
- }
- @MemberSupport public Blob default0UpdateAttachment() {
- return getAttachment();
- }
-
-
-
- @Action(semantics = NON_IDEMPOTENT_ARE_YOU_SURE)
- @ActionLayout(
- fieldSetId = LayoutConstants.FieldSetId.IDENTITY,
- position = ActionLayout.Position.PANEL,
- describedAs = "Deletes this object from the persistent datastore")
- public void delete() {
- final String title = titleService.titleOf(this);
- messageService.informUser(String.format("'%s' deleted", title));
- repositoryService.removeAndFlush(this);
- }
-
-
-
- private final static Comparator<SimpleObject> comparator =
- Comparator.comparing(SimpleObject::getName);
-
- @Override
- public int compareTo(final SimpleObject other) {
- return comparator.compare(this, other);
- }
-
-}
diff --git a/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleObject.layout.xml b/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleObject.layout.xml
deleted file mode 100644
index 6a393d4..0000000
--- a/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleObject.layout.xml
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<bs3:grid
- xsi:schemaLocation="https://causeway.apache.org/applib/layout/component https://causeway.apache.org/applib/layout/component/component.xsd https://causeway.apache.org/applib/layout/grid/bootstrap3 https://causeway.apache.org/applib/layout/grid/bootstrap3/bootstrap3.xsd"
- xmlns:cpt="https://causeway.apache.org/applib/layout/component"
- xmlns:bs3="https://causeway.apache.org/applib/layout/grid/bootstrap3"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <bs3:row>
- <bs3:col span="12" unreferencedActions="true">
- <cpt:domainObject bookmarking="AS_ROOT"/>
- </bs3:col>
- </bs3:row>
- <bs3:row>
- <bs3:col span="6">
- <bs3:row>
- <bs3:col span="12">
- <bs3:tabGroup>
- <bs3:tab name="Identity">
- <bs3:row>
- <bs3:col span="12">
- <cpt:fieldSet name="Identity" id="identity"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- <bs3:tab name="Other">
- <bs3:row>
- <bs3:col span="12">
- <cpt:fieldSet name="Other" id="other" unreferencedProperties="true"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- <bs3:tab name="Metadata">
- <bs3:row>
- <bs3:col span="12">
- <cpt:fieldSet name="Metadata" id="metadata"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- </bs3:tabGroup>
- </bs3:col>
- <bs3:col span="12">
- <cpt:fieldSet name="Details" id="details"/>
- </bs3:col>
- </bs3:row>
- </bs3:col>
- <bs3:col span="6">
- <bs3:row>
- <bs3:col span="12">
- <cpt:fieldSet name="Content" id="content"/>
- </bs3:col>
- </bs3:row>
- <bs3:tabGroup unreferencedCollections="true">
- </bs3:tabGroup>
- </bs3:col>
- </bs3:row>
-</bs3:grid>
diff --git a/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleObject.png b/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleObject.png
deleted file mode 100644
index 0bd6f57..0000000
Binary files a/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleObject.png and /dev/null differ
diff --git a/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleObjectRepository.java b/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleObjectRepository.java
deleted file mode 100644
index 77d34a1..0000000
--- a/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleObjectRepository.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package domainapp.modules.simple.dom.so;
-
-import java.util.List;
-
-import org.springframework.data.jpa.repository.JpaRepository;
-
-public interface SimpleObjectRepository extends JpaRepository<SimpleObject, Long> {
-
- List<SimpleObject> findByNameContaining(final String name);
-
- SimpleObject findByName(final String name);
-
-}
diff --git a/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleObjects.java b/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleObjects.java
deleted file mode 100644
index 471315e..0000000
--- a/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleObjects.java
+++ /dev/null
@@ -1,89 +0,0 @@
-package domainapp.modules.simple.dom.so;
-
-import java.util.List;
-
-import jakarta.annotation.Priority;
-import jakarta.inject.Inject;
-import jakarta.inject.Named;
-import jakarta.persistence.TypedQuery;
-
-import org.apache.causeway.applib.annotation.Action;
-import org.apache.causeway.applib.annotation.ActionLayout;
-import org.apache.causeway.applib.annotation.DomainService;
-import org.apache.causeway.applib.annotation.PriorityPrecedence;
-import org.apache.causeway.applib.annotation.PromptStyle;
-import org.apache.causeway.applib.annotation.SemanticsOf;
-import org.apache.causeway.applib.query.Query;
-import org.apache.causeway.applib.services.repository.RepositoryService;
-import org.apache.causeway.persistence.jpa.applib.services.JpaSupportService;
-
-import lombok.RequiredArgsConstructor;
-
-import domainapp.modules.simple.SimpleModule;
-import domainapp.modules.simple.types.Name;
-
-@Named(SimpleModule.NAMESPACE + ".SimpleObjects")
-@DomainService
-@Priority(PriorityPrecedence.EARLY)
-@RequiredArgsConstructor(onConstructor_ = {@Inject} )
-public class SimpleObjects {
-
- final RepositoryService repositoryService;
- final JpaSupportService jpaSupportService;
- final SimpleObjectRepository simpleObjectRepository;
-
-
- @Action(semantics = SemanticsOf.NON_IDEMPOTENT)
- @ActionLayout(promptStyle = PromptStyle.DIALOG_SIDEBAR)
- public SimpleObject create(
- @Name final String name) {
- return repositoryService.persist(SimpleObject.withName(name));
- }
-
-
- @Action(semantics = SemanticsOf.NON_IDEMPOTENT)
- @ActionLayout(promptStyle = PromptStyle.DIALOG_SIDEBAR)
- public List<SimpleObject> findByNameLike(
- @Name final String name) {
- return repositoryService.allMatches(
- Query.named(SimpleObject.class, SimpleObject.NAMED_QUERY__FIND_BY_NAME_LIKE)
- .withParameter("name", "%" + name + "%"));
- }
-
-
- @Action(semantics = SemanticsOf.SAFE)
- @ActionLayout(promptStyle = PromptStyle.DIALOG_SIDEBAR)
- public List<SimpleObject> findByName(
- @Name final String name
- ) {
- return simpleObjectRepository.findByNameContaining(name);
- }
-
-
- public SimpleObject findByNameExact(final String name) {
- return simpleObjectRepository.findByName(name);
- }
-
-
-
- @Action(semantics = SemanticsOf.SAFE)
- public List<SimpleObject> listAll() {
- return simpleObjectRepository.findAll();
- }
-
-
-
- public void ping() {
- jpaSupportService.getEntityManager(SimpleObject.class)
- .mapEmptyToFailure()
- .mapSuccessAsNullable(entityManager -> {
- final TypedQuery<SimpleObject> q = entityManager.createQuery(
- "SELECT p FROM SimpleObject p ORDER BY p.name",
- SimpleObject.class)
- .setMaxResults(1);
- return q.getResultList();
- })
- .ifFailureFail();
- }
-
-}
diff --git a/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObject_persona.java b/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObject_persona.java
deleted file mode 100644
index 27fac28..0000000
--- a/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObject_persona.java
+++ /dev/null
@@ -1,107 +0,0 @@
-package domainapp.modules.simple.fixture;
-
-import java.io.ByteArrayOutputStream;
-import java.io.InputStream;
-
-import jakarta.inject.Inject;
-
-import org.springframework.core.io.ClassPathResource;
-
-import org.apache.causeway.applib.services.clock.ClockService;
-import org.apache.causeway.applib.services.registry.ServiceRegistry;
-import org.apache.causeway.applib.value.Blob;
-import org.apache.causeway.testing.fakedata.applib.services.FakeDataService;
-import org.apache.causeway.testing.fixtures.applib.personas.BuilderScriptWithResult;
-import org.apache.causeway.testing.fixtures.applib.personas.Persona;
-import org.apache.causeway.testing.fixtures.applib.setup.PersonaEnumPersistAll;
-
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
-import lombok.Setter;
-import lombok.SneakyThrows;
-import lombok.val;
-import lombok.experimental.Accessors;
-
-import domainapp.modules.simple.dom.so.SimpleObject;
-import domainapp.modules.simple.dom.so.SimpleObjects;
-
-@RequiredArgsConstructor
-public enum SimpleObject_persona
-implements Persona<SimpleObject, SimpleObject_persona.Builder> {
-
- FOO("Foo", "Foo.pdf"),
- BAR("Bar", "Bar.pdf"),
- BAZ("Baz", null),
- FRODO("Frodo", "Frodo.pdf"),
- FROYO("Froyo", null),
- FIZZ("Fizz", "Fizz.pdf"),
- BIP("Bip", null),
- BOP("Bop", null),
- BANG("Bang", "Bang.pdf"),
- BOO("Boo", null);
-
- private final String name;
- private final String contentFileName;
-
- @Override
- public Builder builder() {
- return new Builder().setPersona(this);
- }
-
- @Override
- public SimpleObject findUsing(final ServiceRegistry serviceRegistry) {
- return serviceRegistry.lookupService(SimpleObjects.class).map(x -> x.findByNameExact(name)).orElseThrow();
- }
-
- @Accessors(chain = true)
- public static class Builder extends BuilderScriptWithResult<SimpleObject> {
-
- @Getter @Setter private SimpleObject_persona persona;
-
- @Override
- protected SimpleObject buildResult(final ExecutionContext ec) {
-
- val simpleObject = wrap(simpleObjects).create(persona.name);
-
- if (persona.contentFileName != null) {
- val bytes = toBytes(persona.contentFileName);
- val attachment = new Blob(persona.contentFileName, "application/pdf", bytes);
- simpleObject.updateAttachment(attachment);
- }
-
- simpleObject.setLastCheckedIn(clockService.getClock().nowAsLocalDate().plusDays(fakeDataService.ints().between(-10, +10)));
-
- return simpleObject;
- }
-
- @SneakyThrows
- private byte[] toBytes(String fileName){
- InputStream inputStream = new ClassPathResource(fileName, getClass()).getInputStream();
- ByteArrayOutputStream buffer = new ByteArrayOutputStream();
-
- int nRead;
- byte[] data = new byte[16384];
-
- while ((nRead = inputStream.read(data, 0, data.length)) != -1) {
- buffer.write(data, 0, nRead);
- }
-
- return buffer.toByteArray();
- }
-
- // -- DEPENDENCIES
-
- @Inject SimpleObjects simpleObjects;
- @Inject ClockService clockService;
- @Inject FakeDataService fakeDataService;
- }
-
- public static class PersistAll
- extends PersonaEnumPersistAll<SimpleObject, SimpleObject_persona, Builder> {
- public PersistAll() {
- super(SimpleObject_persona.class);
- }
- }
-
-
-}
diff --git a/module-simple/src/main/java/domainapp/modules/simple/types/Name.java b/module-simple/src/main/java/domainapp/modules/simple/types/Name.java
deleted file mode 100644
index 9910465..0000000
--- a/module-simple/src/main/java/domainapp/modules/simple/types/Name.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package domainapp.modules.simple.types;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-import org.apache.causeway.applib.annotation.Parameter;
-import org.apache.causeway.applib.annotation.ParameterLayout;
-import org.apache.causeway.applib.annotation.Property;
-
-@Property(maxLength = Name.MAX_LEN)
-@Parameter(maxLength = Name.MAX_LEN)
-@ParameterLayout(named = "Name")
-@Target({ ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE })
-@Retention(RetentionPolicy.RUNTIME)
-public @interface Name {
-
- int MAX_LEN = 40;
-}
diff --git a/module-simple/src/main/java/domainapp/modules/simple/types/Notes.java b/module-simple/src/main/java/domainapp/modules/simple/types/Notes.java
deleted file mode 100644
index 7988f84..0000000
--- a/module-simple/src/main/java/domainapp/modules/simple/types/Notes.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package domainapp.modules.simple.types;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-import org.apache.causeway.applib.annotation.Editing;
-import org.apache.causeway.applib.annotation.Parameter;
-import org.apache.causeway.applib.annotation.ParameterLayout;
-import org.apache.causeway.applib.annotation.Property;
-import org.apache.causeway.applib.annotation.PropertyLayout;
-import org.apache.causeway.applib.annotation.Where;
-
-@Property(editing = Editing.ENABLED, maxLength = Notes.MAX_LEN)
-@PropertyLayout(named = "Notes", multiLine = 10, hidden = Where.ALL_TABLES)
-@Parameter(maxLength = Notes.MAX_LEN)
-@ParameterLayout(named = "Notes", multiLine = 10)
-@Target({ ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE })
-@Retention(RetentionPolicy.RUNTIME)
-public @interface Notes {
-
- int MAX_LEN = 4000;
-
-}
diff --git a/module-simple/src/main/resources/domainapp/modules/simple/fixture/Bang.docx b/module-simple/src/main/resources/domainapp/modules/simple/fixture/Bang.docx
deleted file mode 100644
index d9a0df3..0000000
Binary files a/module-simple/src/main/resources/domainapp/modules/simple/fixture/Bang.docx and /dev/null differ
diff --git a/module-simple/src/main/resources/domainapp/modules/simple/fixture/Bang.pdf b/module-simple/src/main/resources/domainapp/modules/simple/fixture/Bang.pdf
deleted file mode 100644
index d1b6052..0000000
Binary files a/module-simple/src/main/resources/domainapp/modules/simple/fixture/Bang.pdf and /dev/null differ
diff --git a/module-simple/src/main/resources/domainapp/modules/simple/fixture/Bar.docx b/module-simple/src/main/resources/domainapp/modules/simple/fixture/Bar.docx
deleted file mode 100644
index 017b363..0000000
Binary files a/module-simple/src/main/resources/domainapp/modules/simple/fixture/Bar.docx and /dev/null differ
diff --git a/module-simple/src/main/resources/domainapp/modules/simple/fixture/Bar.pdf b/module-simple/src/main/resources/domainapp/modules/simple/fixture/Bar.pdf
deleted file mode 100644
index a50b5c7..0000000
Binary files a/module-simple/src/main/resources/domainapp/modules/simple/fixture/Bar.pdf and /dev/null differ
diff --git a/module-simple/src/main/resources/domainapp/modules/simple/fixture/Fizz.docx b/module-simple/src/main/resources/domainapp/modules/simple/fixture/Fizz.docx
deleted file mode 100644
index 840a4a1..0000000
Binary files a/module-simple/src/main/resources/domainapp/modules/simple/fixture/Fizz.docx and /dev/null differ
diff --git a/module-simple/src/main/resources/domainapp/modules/simple/fixture/Fizz.pdf b/module-simple/src/main/resources/domainapp/modules/simple/fixture/Fizz.pdf
deleted file mode 100644
index f95c8a7..0000000
Binary files a/module-simple/src/main/resources/domainapp/modules/simple/fixture/Fizz.pdf and /dev/null differ
diff --git a/module-simple/src/main/resources/domainapp/modules/simple/fixture/Foo.docx b/module-simple/src/main/resources/domainapp/modules/simple/fixture/Foo.docx
deleted file mode 100644
index c527689..0000000
Binary files a/module-simple/src/main/resources/domainapp/modules/simple/fixture/Foo.docx and /dev/null differ
diff --git a/module-simple/src/main/resources/domainapp/modules/simple/fixture/Foo.pdf b/module-simple/src/main/resources/domainapp/modules/simple/fixture/Foo.pdf
deleted file mode 100644
index 7451793..0000000
Binary files a/module-simple/src/main/resources/domainapp/modules/simple/fixture/Foo.pdf and /dev/null differ
diff --git a/module-simple/src/main/resources/domainapp/modules/simple/fixture/Frodo.docx b/module-simple/src/main/resources/domainapp/modules/simple/fixture/Frodo.docx
deleted file mode 100644
index 27e9031..0000000
Binary files a/module-simple/src/main/resources/domainapp/modules/simple/fixture/Frodo.docx and /dev/null differ
diff --git a/module-simple/src/main/resources/domainapp/modules/simple/fixture/Frodo.pdf b/module-simple/src/main/resources/domainapp/modules/simple/fixture/Frodo.pdf
deleted file mode 100644
index 4021c2c..0000000
Binary files a/module-simple/src/main/resources/domainapp/modules/simple/fixture/Frodo.pdf and /dev/null differ
diff --git a/pom.xml b/pom.xml
index 1cfc018..e6abceb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -50,18 +50,6 @@
<artifactId>simpleapp-jpa-module-visit</artifactId>
<version>${project.version}</version>
</dependency>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>simpleapp-jpa-module-simple</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>simpleapp-jpa-module-simple-tests</artifactId>
- <version>${project.version}</version>
- <scope>test</scope>
- <type>test-jar</type>
- </dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>simpleapp-jpa-webapp</artifactId>
@@ -100,8 +88,6 @@
<modules>
<module>module-petowner</module>
<module>module-visit</module>
- <module>module-simple</module>
- <module>module-simple-tests</module>
<module>webapp</module>
<module>webapp-tests</module>
</modules>
diff --git a/setver.sh b/setver.sh
index 843f45b..f27c0a0 100755
--- a/setver.sh
+++ b/setver.sh
@@ -37,8 +37,6 @@ mvnd versions:update-parent -DparentVersion=[$VERSION,$VERSION] -Dskip.nightly
mvnd versions:set -DnewVersion=$VERSION
git add pom.xml
-git add module-simple-tests/pom.xml
-git add module-simple/pom.xml
git add webapp-tests/pom.xml
git add webapp/pom.xml
diff --git a/webapp-tests/src/test/java/domainapp/webapp/integtests/WebAppIntegTestAbstract.java b/webapp-tests/src/test/java/domainapp/webapp/integtests/WebAppIntegTestAbstract.java
index b131dc4..7a9196d 100644
--- a/webapp-tests/src/test/java/domainapp/webapp/integtests/WebAppIntegTestAbstract.java
+++ b/webapp-tests/src/test/java/domainapp/webapp/integtests/WebAppIntegTestAbstract.java
@@ -16,7 +16,6 @@
import org.apache.causeway.testing.fixtures.applib.CausewayModuleTestingFixturesApplib;
import org.apache.causeway.testing.integtestsupport.applib.CausewayIntegrationTestAbstract;
-import domainapp.modules.simple.SimpleModule;
import domainapp.webapp.application.ApplicationModule;
@SpringBootTest(
@@ -41,9 +40,7 @@ public abstract class WebAppIntegTestAbstract extends CausewayIntegrationTestAbs
CausewayModuleCoreRuntimeServices.class,
CausewayModuleSecurityBypass.class,
CausewayModulePersistenceJpaEclipselink.class,
- CausewayModuleTestingFixturesApplib.class,
-
- SimpleModule.class
+ CausewayModuleTestingFixturesApplib.class
})
@PropertySources({
@PropertySource(CausewayPresets.H2InMemory_withUniqueSchema),
diff --git a/webapp-tests/src/test/java/domainapp/webapp/integtests/smoke/Smoke_IntegTest.java b/webapp-tests/src/test/java/domainapp/webapp/integtests/smoke/Smoke_IntegTest.java
index 0f24093..97a7ee4 100644
--- a/webapp-tests/src/test/java/domainapp/webapp/integtests/smoke/Smoke_IntegTest.java
+++ b/webapp-tests/src/test/java/domainapp/webapp/integtests/smoke/Smoke_IntegTest.java
@@ -3,8 +3,8 @@
import java.util.List;
import jakarta.inject.Inject;
+import jakarta.inject.Named;
-import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat;
@@ -12,32 +12,32 @@
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.transaction.annotation.Transactional;
-import org.apache.causeway.applib.services.wrapper.InvalidException;
import org.apache.causeway.applib.services.xactn.TransactionService;
-import domainapp.modules.simple.dom.so.SimpleObject;
-import domainapp.modules.simple.dom.so.SimpleObjects;
+import domainapp.modules.petowner.PetOwnerModule;
+import domainapp.modules.petowner.dom.petowner.PetOwner;
+import domainapp.modules.petowner.dom.petowner.PetOwners;
import domainapp.webapp.integtests.WebAppIntegTestAbstract;
@DirtiesContext
@Transactional
class Smoke_IntegTest extends WebAppIntegTestAbstract {
- @Inject SimpleObjects menu;
+ @Inject @Named(PetOwnerModule.NAMESPACE + ".PetOwners") PetOwners menu;
@Inject TransactionService transactionService;
@Test
void happy_case() {
// when
- List<SimpleObject> all = wrap(menu).listAll();
+ List<PetOwner> all = wrap(menu).listAll();
// then
assertThat(all).isEmpty();
// when
- final SimpleObject fred = wrap(menu).create("Fred");
+ final PetOwner fred = wrap(menu).create("Fred", null, "01234 567890", null);
transactionService.flushTransaction();
// then
@@ -47,49 +47,13 @@ void happy_case() {
// when
- final SimpleObject bill = wrap(menu).create("Bill");
+ final PetOwner bill = wrap(menu).create("Bill", null, "01234 567891", null);
transactionService.flushTransaction();
// then
all = wrap(menu).listAll();
assertThat(all).hasSize(2);
assertThat(all).contains(fred, bill);
-
-
- // when
- wrap(fred).updateName("Freddy");
- transactionService.flushTransaction();
-
- // then
- assertThat(wrap(fred).getName()).isEqualTo("Freddy");
-
-
- // when
- wrap(fred).setNotes("These are some notes");
- transactionService.flushTransaction();
-
- // then
- assertThat(wrap(fred).getNotes()).isEqualTo("These are some notes");
-
-
- // when
- Assertions.assertThrows(InvalidException.class, () -> {
- wrap(fred).updateName("New name !!!");
- transactionService.flushTransaction();
- }, "Exclamation mark is not allowed");
-
- // then
- assertThat(wrap(fred).getNotes()).isEqualTo("These are some notes");
-
-
- // when
- wrap(fred).delete();
- transactionService.flushTransaction();
-
- // then
- all = wrap(menu).listAll();
- assertThat(all).hasSize(1);
}
}
-
diff --git a/webapp-tests/src/test/resources/application-test.yml b/webapp-tests/src/test/resources/application-test.yml
index c92c075..f696b84 100644
--- a/webapp-tests/src/test/resources/application-test.yml
+++ b/webapp-tests/src/test/resources/application-test.yml
@@ -1,5 +1,5 @@
causeway:
persistence:
schema:
- auto-create-schemas: "simple"
+ auto-create-schemas: "petowner,visit"
diff --git a/webapp/pom.xml b/webapp/pom.xml
index b1bfa99..7ea02a0 100644
--- a/webapp/pom.xml
+++ b/webapp/pom.xml
@@ -86,13 +86,13 @@
<dependency>
<groupId>${project.groupId}</groupId>
- <artifactId>simpleapp-jpa-module-visit</artifactId>
- <version>3.5.0</version>
+ <artifactId>simpleapp-jpa-module-petowner</artifactId>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
- <artifactId>simpleapp-jpa-module-simple</artifactId>
+ <artifactId>simpleapp-jpa-module-visit</artifactId>
+ <version>3.5.0</version>
</dependency>
<!-- causeway -->
diff --git a/webapp/src/main/java/domainapp/webapp/application/ApplicationModule.java b/webapp/src/main/java/domainapp/webapp/application/ApplicationModule.java
index 43181cc..f67afeb 100644
--- a/webapp/src/main/java/domainapp/webapp/application/ApplicationModule.java
+++ b/webapp/src/main/java/domainapp/webapp/application/ApplicationModule.java
@@ -5,13 +5,12 @@
import org.springframework.context.annotation.Import;
import domainapp.modules.petowner.PetOwnerModule;
-import domainapp.modules.simple.SimpleModule;
import domainapp.modules.visit.VisitModule;
@Configuration
@Import({
+ PetOwnerModule.class,
VisitModule.class,
- SimpleModule.class,
})
@ComponentScan
public class ApplicationModule {
diff --git a/webapp/src/main/java/domainapp/webapp/application/seed/CustomRolesAndUsers.java b/webapp/src/main/java/domainapp/webapp/application/seed/CustomRolesAndUsers.java
index a8c0e83..a7027c3 100644
--- a/webapp/src/main/java/domainapp/webapp/application/seed/CustomRolesAndUsers.java
+++ b/webapp/src/main/java/domainapp/webapp/application/seed/CustomRolesAndUsers.java
@@ -19,7 +19,6 @@ public class CustomRolesAndUsers extends FixtureScript {
@Override
protected void execute(ExecutionContext executionContext) {
executionContext.executeChildren(this,
- new SimpleModuleSuperuserRole(),
new PetClinicSuperuserRole(),
new SvenUser());
}
@@ -42,24 +41,6 @@ protected void execute(ExecutionContext executionContext) {
}
}
- private static class SimpleModuleSuperuserRole extends AbstractRoleAndPermissionsFixtureScript {
-
- public static final String ROLE_NAME = "simple-superuser";
-
- public SimpleModuleSuperuserRole() {
- super(ROLE_NAME, "Permission to use everything in the 'simple' module");
- }
-
- @Override
- protected void execute(ExecutionContext executionContext) {
- newPermissions(
- ApplicationPermissionRule.ALLOW,
- ApplicationPermissionMode.CHANGING,
- Can.of(ApplicationFeatureId.newNamespace("simple"))
- );
- }
- }
-
private static class SvenUser extends AbstractUserAndRolesFixtureScript {
public SvenUser() {
super(() -> "sven", () -> "pass", () -> AccountType.LOCAL, new RoleSupplier());
@@ -70,8 +51,7 @@ private static class RoleSupplier implements Supplier<Can<String>> {
public Can<String> get() {
return Can.of(
causewayConfiguration.getExtensions().getSecman().getSeed().getRegularUser().getRoleName(), // built-in stuff
- PetClinicSuperuserRole.ROLE_NAME,
- SimpleModuleSuperuserRole.ROLE_NAME
+ PetClinicSuperuserRole.ROLE_NAME
);
}
@Inject CausewayConfiguration causewayConfiguration;
diff --git a/webapp/src/main/java/domainapp/webapp/application/services/health/HealthCheckServiceImpl.java b/webapp/src/main/java/domainapp/webapp/application/services/health/HealthCheckServiceImpl.java
index 4e08641..f14fcac 100644
--- a/webapp/src/main/java/domainapp/webapp/application/services/health/HealthCheckServiceImpl.java
+++ b/webapp/src/main/java/domainapp/webapp/application/services/health/HealthCheckServiceImpl.java
@@ -8,23 +8,23 @@
import org.apache.causeway.applib.services.health.Health;
import org.apache.causeway.applib.services.health.HealthCheckService;
-import domainapp.modules.simple.dom.so.SimpleObjects;
+import domainapp.modules.petowner.dom.petowner.PetOwners;
@Service
@Named("domainapp.HealthCheckServiceImpl")
public class HealthCheckServiceImpl implements HealthCheckService {
- private final SimpleObjects simpleObjects;
+ private final PetOwners petOwners;
@Inject
- public HealthCheckServiceImpl(SimpleObjects simpleObjects) {
- this.simpleObjects = simpleObjects;
+ public HealthCheckServiceImpl(PetOwners petOwners) {
+ this.petOwners = petOwners;
}
@Override
public Health check() {
try {
- simpleObjects.ping();
+ petOwners.ping();
return Health.ok();
} catch (Exception ex) {
return Health.error(ex);
diff --git a/webapp/src/main/java/domainapp/webapp/application/services/homepage/HomePageViewModel.java b/webapp/src/main/java/domainapp/webapp/application/services/homepage/HomePageViewModel.java
index 3d54a22..b385a9f 100644
--- a/webapp/src/main/java/domainapp/webapp/application/services/homepage/HomePageViewModel.java
+++ b/webapp/src/main/java/domainapp/webapp/application/services/homepage/HomePageViewModel.java
@@ -18,11 +18,11 @@
import domainapp.modules.petowner.dom.petowner.PetOwner;
import domainapp.modules.petowner.dom.petowner.PetOwners;
-import domainapp.modules.simple.SimpleModule;
+import domainapp.modules.petowner.PetOwnerModule;
import domainapp.modules.visit.dom.visit.Visit;
import domainapp.modules.visit.dom.visit.VisitRepository;
-@Named(SimpleModule.NAMESPACE + ".HomePageViewModel")
+@Named(PetOwnerModule.NAMESPACE + ".HomePageViewModel")
@DomainObject(nature = Nature.VIEW_MODEL)
@HomePage
@DomainObjectLayout()
diff --git a/webapp/src/main/java/domainapp/webapp/custom/restapi/CustomController.java b/webapp/src/main/java/domainapp/webapp/custom/restapi/CustomController.java
index 7934f39..d8abf03 100644
--- a/webapp/src/main/java/domainapp/webapp/custom/restapi/CustomController.java
+++ b/webapp/src/main/java/domainapp/webapp/custom/restapi/CustomController.java
@@ -17,8 +17,8 @@
import lombok.RequiredArgsConstructor;
-import domainapp.modules.simple.dom.so.SimpleObject;
-import domainapp.modules.simple.dom.so.SimpleObjects;
+import domainapp.modules.petowner.dom.petowner.PetOwner;
+import domainapp.modules.petowner.dom.petowner.PetOwners;
@RestController
@RequiredArgsConstructor(onConstructor_ = {@Inject})
@@ -26,12 +26,12 @@ class CustomController {
private final InteractionService interactionService;
private final TransactionalProcessor transactionalProcessor;
- private final SimpleObjects simpleObjects;
+ private final PetOwners petOwners;
- @GetMapping("/custom/simpleObjects")
- List<SimpleObject> all() {
- return call("sven", simpleObjects::listAll)
- .orElse(Collections.<SimpleObject>emptyList());
+ @GetMapping("/custom/petOwners")
+ List<PetOwner> all() {
+ return call("sven", petOwners::listAll)
+ .orElse(Collections.<PetOwner>emptyList());
}
private <T> Optional<T> call(
diff --git a/webapp/src/main/java/domainapp/webapp/quartz/job/SampleJob.java b/webapp/src/main/java/domainapp/webapp/quartz/job/SampleJob.java
index f338c85..40fc5c3 100644
--- a/webapp/src/main/java/domainapp/webapp/quartz/job/SampleJob.java
+++ b/webapp/src/main/java/domainapp/webapp/quartz/job/SampleJob.java
@@ -21,8 +21,8 @@
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
-import domainapp.modules.simple.dom.so.SimpleObject;
-import domainapp.modules.simple.dom.so.SimpleObjects;
+import domainapp.modules.petowner.dom.petowner.PetOwner;
+import domainapp.modules.petowner.dom.petowner.PetOwners;
@Component
@RequiredArgsConstructor(onConstructor_ = {@Inject})
@@ -31,17 +31,17 @@ public class SampleJob implements Job {
private final InteractionService interactionService;
private final TransactionalProcessor transactionalProcessor;
- private final SimpleObjects simpleObjects;
+ private final PetOwners petOwners;
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
- final List<SimpleObject> all = all();
- log.info("{} objects in the database", all.size());
+ final List<PetOwner> all = all();
+ log.info("{} pet owners in the database", all.size());
}
- List<SimpleObject> all() {
- return call("sven", simpleObjects::listAll)
- .orElse(Collections.<SimpleObject>emptyList());
+ List<PetOwner> all() {
+ return call("sven", petOwners::listAll)
+ .orElse(Collections.<PetOwner>emptyList());
}
private <T> Optional<T> call(
diff --git a/webapp/src/main/resources/application.yml b/webapp/src/main/resources/application.yml
index dae0fb4..29e0752 100644
--- a/webapp/src/main/resources/application.yml
+++ b/webapp/src/main/resources/application.yml
@@ -43,7 +43,7 @@ causeway:
password: "pass"
role-name: "causeway-ext-secman-admin"
namespace-permissions:
- sticky: "simple"
+ sticky: "petowner"
# additional: ...
regular-user:
role-name: "causeway-ext-secman-user"
@@ -104,7 +104,7 @@ causeway:
fallback:
username: sven
roles:
- - simple-superuser
+ - petclinic-superuser
- foo
- bar
diff --git a/webapp/src/main/resources/config/application.properties b/webapp/src/main/resources/config/application.properties
index d921535..1e046a2 100644
--- a/webapp/src/main/resources/config/application.properties
+++ b/webapp/src/main/resources/config/application.properties
@@ -15,7 +15,7 @@ spring.datasource.url=jdbc:h2:mem:simple;DATABASE_TO_UPPER=false;IGNORECASE=TRUE
spring.datasource.driver-class-name=org.h2.Driver
causeway.persistence.schema.create-schema-sql-template=CREATE SCHEMA IF NOT EXISTS %s
-causeway.persistence.schema.auto-create-schemas=petowner,visit,simple,causewayExtSecman,causewayExtAuditTrail,causewayExtCommandLog,causewayExtExecutionLog,causewayExtExecutionOutbox,causewayExtSessionLog
+causeway.persistence.schema.auto-create-schemas=petowner,visit,causewayExtSecman,causewayExtAuditTrail,causewayExtCommandLog,causewayExtExecutionLog,causewayExtExecutionOutbox,causewayExtSessionLog
causeway.core.meta-model.introspector.policy=encapsulation_enabled
diff --git a/webapp/src/main/resources/db/migration/SQLSERVER/V2020.01.20.14.10__create_schema_simple.sql b/webapp/src/main/resources/db/migration/SQLSERVER/V2020.01.20.14.10__create_schema_simple.sql
deleted file mode 100644
index 447a66f..0000000
--- a/webapp/src/main/resources/db/migration/SQLSERVER/V2020.01.20.14.10__create_schema_simple.sql
+++ /dev/null
@@ -1,8 +0,0 @@
-IF NOT EXISTS (
- SELECT 1
- FROM sys.schemas
- WHERE name = N'simple'
-)
- EXEC('CREATE SCHEMA [simple]');
-GO
-
diff --git a/webapp/src/main/resources/db/migration/SQLSERVER/V2020.01.20.14.14__create_table_simple_SimpleObject.sql b/webapp/src/main/resources/db/migration/SQLSERVER/V2020.01.20.14.14__create_table_simple_SimpleObject.sql
deleted file mode 100644
index 0d727cf..0000000
--- a/webapp/src/main/resources/db/migration/SQLSERVER/V2020.01.20.14.14__create_table_simple_SimpleObject.sql
+++ /dev/null
@@ -1,25 +0,0 @@
-SET ANSI_NULLS ON
-GO
-
-SET QUOTED_IDENTIFIER ON
-GO
-
-CREATE TABLE [simple].[SimpleObject](
- [id] [bigint] IDENTITY(1,1) NOT NULL,
- [name] [varchar](40) NOT NULL,
- [notes] [varchar](4000) NULL,
- [version] [datetime2](7) NOT NULL,
-
- CONSTRAINT [SimpleObject_PK] PRIMARY KEY CLUSTERED
- ([id] ASC)
- WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
- ON [PRIMARY],
-
- CONSTRAINT [SimpleObject_name_UNQ] UNIQUE NONCLUSTERED
- ([name] ASC)
- WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
- ON [PRIMARY]
-)
-ON [PRIMARY]
-GO
-
diff --git a/webapp/src/main/resources/menubars.layout.xml b/webapp/src/main/resources/menubars.layout.xml
index 860673c..3900597 100644
--- a/webapp/src/main/resources/menubars.layout.xml
+++ b/webapp/src/main/resources/menubars.layout.xml
@@ -14,15 +14,6 @@
<mb3:serviceAction objectType="petowner.PetOwners" id="listAll"/>
</mb3:section>
</mb3:menu>
- <mb3:menu>
- <mb3:named>Simple Objects</mb3:named>
- <mb3:section>
- <mb3:serviceAction objectType="simple.SimpleObjects" id="create"/>
- <mb3:serviceAction objectType="simple.SimpleObjects" id="findByName"/>
- <mb3:serviceAction objectType="simple.SimpleObjects" id="findByNameLike"/>
- <mb3:serviceAction objectType="simple.SimpleObjects" id="listAll"/>
- </mb3:section>
- </mb3:menu>
<mb3:menu unreferencedActions="true">
<mb3:named>Other</mb3:named>
</mb3:menu>
diff --git a/webapp/src/main/resources/shiro.ini b/webapp/src/main/resources/shiro.ini
index 11af16a..5ee8861 100644
--- a/webapp/src/main/resources/shiro.ini
+++ b/webapp/src/main/resources/shiro.ini
@@ -17,9 +17,9 @@ securityManager.realms = $iniRealm
sven = pass, admin_role
-dick = pass, simple_role, default_role
-bob = pass, simple_role, default_role, fixtures_role
-joe = pass, simple_role, default_role
+dick = pass, petclinic_role, default_role
+bob = pass, petclinic_role, default_role, fixtures_role
+joe = pass, petclinic_role, default_role
guest = guest, guest_role, default_role
@@ -35,11 +35,13 @@ guest = guest, guest_role, default_role
# role = perm1, perm2, perm3, ...
# perm in format: logicalTypeNamespace:logicalTypeSimpleName:memberName:r,w
-simple_role = *:SimpleObjects:*:*,\
- *:SimpleObject:*:*
-guest_role = *:SimpleObjects:findByName:*,\
- *:SimpleObjects:listAll:*,\
- *:SimpleObjects:*:r
+petclinic_role = *:PetOwners:*:*,\
+ *:PetOwner:*:*,\
+ *:Visits:*:*,\
+ *:Visit:*:*
+guest_role = *:PetOwners:findByName:*,\
+ *:PetOwners:listAll:*,\
+ *:PetOwners:*:r
admin_role = *
default_role = causeway.applib,\
causeway.security