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 2021/07/02 14:38:01 UTC
[isis-app-simpleapp] 01/01: ISIS-2789: hacking at jpa auditing
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch ISIS-2789
in repository https://gitbox.apache.org/repos/asf/isis-app-simpleapp.git
commit 7ca97ad9f80a2a772deec9dd02311fd512450e67
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jul 2 15:37:42 2021 +0100
ISIS-2789: hacking at jpa auditing
---
.../modules/simple/dom/so/SimpleObject.java | 13 ++++++----
.../modules/simple/dom/so/SimpleObjects.java | 10 +++++---
webapp/pom.xml | 2 +-
.../main/java/domainapp/webapp/AppManifest.java | 3 +--
.../src/main/java/domainapp/webapp/SimpleApp.java | 3 ++-
.../services/health/HealthCheckServiceImpl.java | 4 +--
.../main/resources/config/application.properties | 12 ++++++---
webapp/src/main/resources/log4j2-spring.xml | 5 ++++
webapp/src/main/resources/menubars.layout.xml | 30 +++++++++++++++++++++-
9 files changed, 62 insertions(+), 20 deletions(-)
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
index 1f7a255..e078a2a 100644
--- 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
@@ -10,12 +10,14 @@ import org.apache.isis.applib.annotation.ActionLayout;
import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.applib.annotation.DomainObjectLayout;
import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.Property;
import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Publishing;
import org.apache.isis.applib.jaxb.PersistentEntityAdapter;
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.persistence.jpa.applib.integration.JpaEntityInjectionPointResolver;
+import org.apache.isis.persistence.jpa.applib.integration.IsisEntityListener;
import static org.apache.isis.applib.annotation.SemanticsOf.IDEMPOTENT;
import static org.apache.isis.applib.annotation.SemanticsOf.NON_IDEMPOTENT_ARE_YOU_SURE;
@@ -33,7 +35,7 @@ import domainapp.modules.simple.types.Notes;
@javax.persistence.Entity
@javax.persistence.Table(
- schema="SIMPLE",
+ schema="simple",
uniqueConstraints = {
@javax.persistence.UniqueConstraint(name = "SimpleObject_name_UNQ", columnNames = {"name"})
}
@@ -46,8 +48,8 @@ import domainapp.modules.simple.types.Notes;
"WHERE so.name LIKE :name"
)
})
-@javax.persistence.EntityListeners(JpaEntityInjectionPointResolver.class) // injection support
-@DomainObject(objectType = "simple.SimpleObject")
+@javax.persistence.EntityListeners(IsisEntityListener.class)
+@DomainObject(logicalTypeName = "simple.SimpleObject", entityChangePublishing = Publishing.ENABLED)
@DomainObjectLayout()
@NoArgsConstructor(access = AccessLevel.PUBLIC)
@XmlJavaTypeAdapter(PersistentEntityAdapter.class)
@@ -92,11 +94,12 @@ public class SimpleObject implements Comparable<SimpleObject> {
@Notes
@javax.persistence.Column(length = Notes.MAX_LEN, nullable = true)
@Getter @Setter
+ @Property(commandPublishing = Publishing.ENABLED, executionPublishing = Publishing.ENABLED)
@PropertyLayout(fieldSetId = "name", sequence = "2")
private String notes;
- @Action(semantics = IDEMPOTENT)
+ @Action(semantics = IDEMPOTENT, commandPublishing = Publishing.ENABLED, executionPublishing = Publishing.ENABLED)
@ActionLayout(associateWith = "name", promptStyle = PromptStyle.INLINE)
public SimpleObject updateName(
@Name 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
index 329b107..e67d9bb 100644
--- 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
@@ -10,6 +10,7 @@ import org.apache.isis.applib.annotation.ActionLayout;
import org.apache.isis.applib.annotation.BookmarkPolicy;
import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.applib.annotation.PriorityPrecedence;
import org.apache.isis.applib.annotation.Programmatic;
import org.apache.isis.applib.annotation.PromptStyle;
import org.apache.isis.applib.annotation.SemanticsOf;
@@ -22,13 +23,14 @@ import domainapp.modules.simple.types.Name;
@DomainService(
nature = NatureOfService.VIEW,
objectType = "simple.SimpleObjects"
- )
+)
+@javax.annotation.Priority(PriorityPrecedence.EARLY)
@lombok.RequiredArgsConstructor(onConstructor_ = {@Inject} )
public class SimpleObjects {
- private final RepositoryService repositoryService;
- private final JpaSupportService jpaSupportService;
- private final SimpleObjectRepository simpleObjectRepository;
+ final RepositoryService repositoryService;
+ final JpaSupportService jpaSupportService;
+ final SimpleObjectRepository simpleObjectRepository;
@Action(semantics = SemanticsOf.NON_IDEMPOTENT)
diff --git a/webapp/pom.xml b/webapp/pom.xml
index 1540bbf..f843b8e 100644
--- a/webapp/pom.xml
+++ b/webapp/pom.xml
@@ -13,7 +13,7 @@
<description>
Assembles and runs both the Wicket viewer and the Restfulobjects viewer
- in a single webapp configured to run using the JDO/DataNucleus object store.
+ in a single webapp configured to run using the JPA/EclipseLink object store.
</description>
<packaging>jar</packaging>
diff --git a/webapp/src/main/java/domainapp/webapp/AppManifest.java b/webapp/src/main/java/domainapp/webapp/AppManifest.java
index e02e4e7..73ccbc8 100644
--- a/webapp/src/main/java/domainapp/webapp/AppManifest.java
+++ b/webapp/src/main/java/domainapp/webapp/AppManifest.java
@@ -18,7 +18,6 @@ import org.apache.isis.viewer.wicket.viewer.IsisModuleViewerWicketViewer;
import domainapp.webapp.application.ApplicationModule;
import domainapp.webapp.application.fixture.scenarios.DomainAppDemo;
import domainapp.webapp.custom.CustomModule;
-import domainapp.webapp.quartz.QuartzModule;
@Configuration
@Import({
@@ -35,7 +34,7 @@ import domainapp.webapp.quartz.QuartzModule;
ApplicationModule.class,
CustomModule.class,
- QuartzModule.class,
+ // QuartzModule.class,
// discoverable fixtures
DomainAppDemo.class
diff --git a/webapp/src/main/java/domainapp/webapp/SimpleApp.java b/webapp/src/main/java/domainapp/webapp/SimpleApp.java
index dcce3c6..7dedb13 100644
--- a/webapp/src/main/java/domainapp/webapp/SimpleApp.java
+++ b/webapp/src/main/java/domainapp/webapp/SimpleApp.java
@@ -9,7 +9,8 @@ import org.apache.isis.core.config.presets.IsisPresets;
@SpringBootApplication
@Import({
- AppManifest.class,
+ AppManifest.class
+// , XrayEnable.class
})
public class SimpleApp extends SpringBootServletInitializer {
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 4f16352..3601a3b 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
@@ -3,14 +3,12 @@ package domainapp.webapp.application.services.health;
import javax.inject.Inject;
import javax.inject.Named;
-import org.springframework.stereotype.Service;
-
import org.apache.isis.applib.services.health.Health;
import org.apache.isis.applib.services.health.HealthCheckService;
import domainapp.modules.simple.dom.so.SimpleObjects;
-@Service
+//@Service
@Named("domainapp.HealthCheckServiceImpl")
public class HealthCheckServiceImpl implements HealthCheckService {
diff --git a/webapp/src/main/resources/config/application.properties b/webapp/src/main/resources/config/application.properties
index 19442f0..2e8b2d7 100644
--- a/webapp/src/main/resources/config/application.properties
+++ b/webapp/src/main/resources/config/application.properties
@@ -11,12 +11,18 @@
spring.flyway.enabled=false
spring.sql.init.platform=h2
-spring.datasource.url=jdbc:h2:mem:simple
+spring.datasource.url=jdbc:h2:mem:simple;DATABASE_TO_UPPER=false
spring.datasource.driver-class-name=org.h2.Driver
-isis.persistence.schema.create-schema-sql-template=CREATE SCHEMA IF NOT EXISTS %S
-isis.persistence.schema.auto-create-schemas=SIMPLE
+isis.persistence.schema.create-schema-sql-template=CREATE SCHEMA IF NOT EXISTS %s
+isis.persistence.schema.auto-create-schemas=simple
+eclipselink.deploy-on-startup=true
+eclipselink.ddl-generation.output-mode=both
+eclipselink.ddl-generation=create-tables
+eclipselink.create-ddl-jdbc-file-name=create-db-schema.sql
+eclipselink.application-location=.
+eclipselink.jpa.upper-case-column-names=false
# uncomment to run during bootstrap
#isis.testing.fixtures.initial-script = domainapp.webapp.application.fixture.scenarios.DomainAppDemo
diff --git a/webapp/src/main/resources/log4j2-spring.xml b/webapp/src/main/resources/log4j2-spring.xml
index ffa0765..dc4176e 100644
--- a/webapp/src/main/resources/log4j2-spring.xml
+++ b/webapp/src/main/resources/log4j2-spring.xml
@@ -18,6 +18,11 @@
<!-- silence Wicket -->
<Logger name="org.apache.wicket.page.PartialPageUpdate" level="error" />
+ <Logger name="org.apache.isis.applib.services.publishing.log.CommandLogger" level="debug" />
+ <Logger name="org.apache.isis.applib.services.publishing.log.ExecutionLogger" level="debug" />
+ <Logger name="org.apache.isis.applib.services.publishing.log.EntityChangesLogger" level="debug" />
+ <Logger name="org.apache.isis.applib.services.publishing.log.EntityPropertyChangeLogger" level="debug" />
+
<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" />
diff --git a/webapp/src/main/resources/menubars.layout.xml b/webapp/src/main/resources/menubars.layout.xml
index d8d0d55..3d8cd56 100644
--- a/webapp/src/main/resources/menubars.layout.xml
+++ b/webapp/src/main/resources/menubars.layout.xml
@@ -31,6 +31,8 @@
<mb3:named>Meta Model and Features</mb3:named>
<mb3:serviceAction objectType="isis.applib.MetaModelServiceMenu" id="downloadMetaModelXml"/>
<mb3:serviceAction objectType="isis.applib.MetaModelServiceMenu" id="downloadMetaModelCsv"/>
+ <mb3:serviceAction objectType="isis.applib.MetaModelServiceMenu" id="downloadMetaModelAscii"/>
+ <mb3:serviceAction objectType="isis.applib.MetaModelServiceMenu" id="downloadMetaModelDiff"/>
<mb3:serviceAction objectType="isis.feat.ApplicationFeatureMenu" id="allNamespaces"/>
<mb3:serviceAction objectType="isis.feat.ApplicationFeatureMenu" id="allTypes"/>
<mb3:serviceAction objectType="isis.feat.ApplicationFeatureMenu" id="allActions"/>
@@ -56,6 +58,31 @@
<mb3:serviceAction objectType="isis.applib.TranslationServicePoMenu" id="switchToWritingTranslations"/>
</mb3:section>
</mb3:menu>
+ <mb3:menu>
+ <mb3:named>Security</mb3:named>
+ <mb3:section>
+ <mb3:named>Users</mb3:named>
+ <mb3:serviceAction objectType="isis.ext.secman.ApplicationUserMenu" id="userManager"/>
+ <mb3:serviceAction objectType="isis.ext.secman.ApplicationUserMenu" id="findUsers"/>
+ </mb3:section>
+ <mb3:section>
+ <mb3:named>Roles</mb3:named>
+ <mb3:serviceAction objectType="isis.ext.secman.ApplicationRoleMenu" id="findRoles"/>
+ <mb3:serviceAction objectType="isis.ext.secman.ApplicationRoleMenu" id="newRole"/>
+ <mb3:serviceAction objectType="isis.ext.secman.ApplicationRoleMenu" id="allRoles"/>
+ </mb3:section>
+ <mb3:section>
+ <mb3:named>Permissions</mb3:named>
+ <mb3:serviceAction objectType="isis.ext.secman.ApplicationPermissionMenu" id="allPermissions"/>
+ <mb3:serviceAction objectType="isis.ext.secman.ApplicationPermissionMenu" id="findOrphanedPermissions"/>
+ </mb3:section>
+ <mb3:section>
+ <mb3:named>Tenancies</mb3:named>
+ <mb3:serviceAction objectType="isis.ext.secman.ApplicationTenancyMenu" id="findTenancies"/>
+ <mb3:serviceAction objectType="isis.ext.secman.ApplicationTenancyMenu" id="newTenancy"/>
+ <mb3:serviceAction objectType="isis.ext.secman.ApplicationTenancyMenu" id="allTenancies"/>
+ </mb3:section>
+ </mb3:menu>
</mb3:secondary>
<mb3:tertiary>
<mb3:menu>
@@ -68,9 +95,10 @@
<mb3:named>Impersonate</mb3:named>
<mb3:serviceAction objectType="isis.sudo.ImpersonateMenu" id="impersonate"/>
<mb3:serviceAction objectType="isis.sudo.ImpersonateMenu" id="impersonateWithRoles"/>
- <mb3:serviceAction objectType="isis.sudo.ImpersonateMenu" id="stopImpersonating"/>
+ <mb3:serviceAction objectType="isis.applib.ImpersonateStopMenu" id="stopImpersonating"/>
</mb3:section>
<mb3:section>
+ <mb3:serviceAction objectType="isis.applib.UserMenu" id="me"/>
<mb3:serviceAction objectType="isis.security.LogoutMenu" id="logout"/>
</mb3:section>
</mb3:menu>