This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch ISIS-3091
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/ISIS-3091 by this push:
new 46d3215f2f ISIS-3091: completes jpa prod for audit trail, wip
46d3215f2f is described below
commit 46d3215f2fc99d5c1f9be65cc42f5890f034878f
Author: Dan Haywood <[email protected]>
AuthorDate: Fri Jul 22 14:34:01 2022 +0100
ISIS-3091: completes jpa prod for audit trail, wip
---
.../IsisBeanFactoryPostProcessorForSpring.java | 1 +
.../config/beans/IsisBeanTypeRegistryDefault.java | 1 +
.../core/config/converters/PatternsConverter.java | 1 +
.../DataSourceIntrospectionService.java | 1 +
.../config/environment/IsisSystemEnvironment.java | 2 +
.../core/config/viewer/web/WebAppContextPath.java | 1 +
.../core/metamodel/context/MetaModelContexts.java | 1 +
.../objectmanager/ObjectManagerDefault.java | 1 +
.../ProgrammingModelInitFilterDefault.java | 1 +
.../metamodel/services/ServiceInjectorDefault.java | 1 +
.../classsubstitutor/ClassSubstitutorDefault.java | 2 +-
.../ClassSubstitutorForCollections.java | 1 +
.../ClassSubstitutorForDomainObjects.java | 1 +
.../classsubstitutor/ClassSubstitutorRegistry.java | 1 +
.../services/events/MetamodelEventService.java | 1 +
...ExceptionRecognizerForRecoverableException.java | 1 +
.../services/grid/GridLoaderServiceDefault.java | 1 +
.../services/grid/GridReaderUsingJaxb.java | 1 +
.../services/grid/GridServiceDefault.java | 1 +
.../grid/bootstrap/GridSystemServiceBootstrap.java | 1 +
.../services/layout/LayoutServiceDefault.java | 1 +
.../metamodel/MetaModelServiceDefault.java | 1 +
.../services/registry/ServiceRegistryDefault.java | 1 +
.../tablecol/TableColumnOrderServiceDefault.java | 1 +
.../TableColumnOrderServiceUsingTxtFile.java | 1 +
.../specloader/ProgrammingModelServiceDefault.java | 1 +
.../specloader/SpecificationLoaderDefault.java | 1 +
.../valuetypes/ValueSemanticsResolverDefault.java | 1 +
.../repository/RepositoryServiceDefault.java | 1 +
.../applib/AuditTrailIntegTestAbstract.java | 77 +------
.../jdo/IsisModuleExtAuditTrailPersistenceJdo.java | 16 +-
.../isis/audittrail/jdo/dom/AuditTrailEntry.java | 25 +--
.../jdo/AuditTrail_IntegTest.java} | 17 +-
.../src/test/resources/application-test.yml | 2 +-
.../IsisModuleExtAuditTrailPersistenceJpa.java} | 4 +-
.../isis/audittrail/jpa/dom/AuditTrailEntry.java | 232 +++++++++++++++++++++
.../jpa/dom/AuditTrailEntryRepository.java | 32 +++
.../isis/audittrail/jpa/AuditTrail_IntegTest.java} | 17 +-
.../src/test/resources/application-test.yml | 13 +-
extensions/security/audittrail/pom.xml | 2 -
.../dom/ApplicationPermissionRepository.java | 3 +-
.../jdo/role/dom/ApplicationRoleRepository.java | 3 +-
.../tenancy/dom/ApplicationTenancyRepository.java | 3 +-
.../jdo/user/dom/ApplicationUserRepository.java | 3 +-
.../dom/ApplicationPermissionRepository.java | 3 +-
.../jpa/role/dom/ApplicationRoleRepository.java | 3 +-
.../tenancy/dom/ApplicationTenancyRepository.java | 3 +-
.../jpa/user/dom/ApplicationUserRepository.java | 3 +-
.../applib/SessionLogIntegTestAbstract.java | 2 +-
.../jpa/IsisModuleExtSessionLogPersistenceJpa.java | 3 +-
.../isis/sessionlog/jpa/dom/SessionLogEntry.java | 2 +-
.../teardown/jpa/TeardownFixtureJpaAbstract.java | 61 ++++++
52 files changed, 418 insertions(+), 142 deletions(-)
diff --git
a/core/config/src/main/java/org/apache/isis/core/config/beans/IsisBeanFactoryPostProcessorForSpring.java
b/core/config/src/main/java/org/apache/isis/core/config/beans/IsisBeanFactoryPostProcessorForSpring.java
index 51201a0a03..f671ee72b2 100644
---
a/core/config/src/main/java/org/apache/isis/core/config/beans/IsisBeanFactoryPostProcessorForSpring.java
+++
b/core/config/src/main/java/org/apache/isis/core/config/beans/IsisBeanFactoryPostProcessorForSpring.java
@@ -36,6 +36,7 @@ import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.commons.collections.Can;
import org.apache.isis.commons.internal.base._Strings;
+import org.apache.isis.core.config.IsisModuleCoreConfig;
import org.apache.isis.core.config.beans.aoppatch.AopPatch;
import lombok.val;
diff --git
a/core/config/src/main/java/org/apache/isis/core/config/beans/IsisBeanTypeRegistryDefault.java
b/core/config/src/main/java/org/apache/isis/core/config/beans/IsisBeanTypeRegistryDefault.java
index 1f3971b5ca..a5fee2dcb0 100644
---
a/core/config/src/main/java/org/apache/isis/core/config/beans/IsisBeanTypeRegistryDefault.java
+++
b/core/config/src/main/java/org/apache/isis/core/config/beans/IsisBeanTypeRegistryDefault.java
@@ -34,6 +34,7 @@ import org.apache.isis.applib.annotation.PriorityPrecedence;
import org.apache.isis.commons.collections.Can;
import org.apache.isis.commons.internal.base._NullSafe;
import org.apache.isis.commons.internal.collections._Maps;
+import org.apache.isis.core.config.IsisModuleCoreConfig;
import lombok.Getter;
import lombok.NonNull;
diff --git
a/core/config/src/main/java/org/apache/isis/core/config/converters/PatternsConverter.java
b/core/config/src/main/java/org/apache/isis/core/config/converters/PatternsConverter.java
index d183de6012..8b2c6412e2 100644
---
a/core/config/src/main/java/org/apache/isis/core/config/converters/PatternsConverter.java
+++
b/core/config/src/main/java/org/apache/isis/core/config/converters/PatternsConverter.java
@@ -31,6 +31,7 @@ import org.springframework.stereotype.Component;
import org.apache.isis.commons.internal.base._Strings;
import org.apache.isis.commons.internal.collections._Maps;
+import org.apache.isis.core.config.IsisModuleCoreConfig;
@Component
@Named(IsisModuleCoreConfig.NAMESPACE + "..PatternsConverter")
diff --git
a/core/config/src/main/java/org/apache/isis/core/config/datasources/DataSourceIntrospectionService.java
b/core/config/src/main/java/org/apache/isis/core/config/datasources/DataSourceIntrospectionService.java
index 1d8a196591..cf8b3a7d12 100644
---
a/core/config/src/main/java/org/apache/isis/core/config/datasources/DataSourceIntrospectionService.java
+++
b/core/config/src/main/java/org/apache/isis/core/config/datasources/DataSourceIntrospectionService.java
@@ -35,6 +35,7 @@ import org.springframework.stereotype.Service;
import org.apache.isis.applib.annotation.PriorityPrecedence;
import org.apache.isis.commons.collections.Can;
import org.apache.isis.commons.internal.base._Lazy;
+import org.apache.isis.core.config.IsisModuleCoreConfig;
import lombok.NonNull;
import lombok.SneakyThrows;
diff --git
a/core/config/src/main/java/org/apache/isis/core/config/environment/IsisSystemEnvironment.java
b/core/config/src/main/java/org/apache/isis/core/config/environment/IsisSystemEnvironment.java
index daab470cfe..4c632e060f 100644
---
a/core/config/src/main/java/org/apache/isis/core/config/environment/IsisSystemEnvironment.java
+++
b/core/config/src/main/java/org/apache/isis/core/config/environment/IsisSystemEnvironment.java
@@ -24,6 +24,8 @@ import lombok.val;
import org.apache.isis.commons.internal.base._Strings;
import org.apache.isis.commons.internal.context._Context;
import org.apache.isis.commons.internal.ioc._IocContainer;
+import org.apache.isis.core.config.IsisModuleCoreConfig;
+
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.event.ApplicationFailedEvent;
import org.springframework.context.ApplicationContext;
diff --git
a/core/config/src/main/java/org/apache/isis/core/config/viewer/web/WebAppContextPath.java
b/core/config/src/main/java/org/apache/isis/core/config/viewer/web/WebAppContextPath.java
index 9f6eabe9e3..975430d96d 100644
---
a/core/config/src/main/java/org/apache/isis/core/config/viewer/web/WebAppContextPath.java
+++
b/core/config/src/main/java/org/apache/isis/core/config/viewer/web/WebAppContextPath.java
@@ -33,6 +33,7 @@ import org.springframework.stereotype.Service;
import org.apache.isis.applib.annotation.PriorityPrecedence;
import org.apache.isis.commons.internal.base._Strings;
import org.apache.isis.commons.internal.resources._Resources;
+import org.apache.isis.core.config.IsisModuleCoreConfig;
import lombok.Getter;
import lombok.val;
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/context/MetaModelContexts.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/context/MetaModelContexts.java
index 66c51a1722..93523aeaaf 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/context/MetaModelContexts.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/context/MetaModelContexts.java
@@ -26,6 +26,7 @@ import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.apache.isis.core.config.environment.IsisSystemEnvironment;
+import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
/**
*
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/ObjectManagerDefault.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/ObjectManagerDefault.java
index e7e24c07a2..50f77587a0 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/ObjectManagerDefault.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/ObjectManagerDefault.java
@@ -40,6 +40,7 @@ import
org.apache.isis.core.metamodel.objectmanager.serialize.ObjectSerializer;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.val;
+import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
/**
*
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodel/ProgrammingModelInitFilterDefault.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodel/ProgrammingModelInitFilterDefault.java
index e221f8dba0..9f75974de6 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodel/ProgrammingModelInitFilterDefault.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodel/ProgrammingModelInitFilterDefault.java
@@ -36,6 +36,7 @@ import static
org.apache.isis.core.metamodel.progmodel.ProgrammingModelInitFilte
import static
org.apache.isis.core.metamodel.progmodel.ProgrammingModelInitFilter.excludingNone;
import lombok.val;
+import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
/**
*
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServiceInjectorDefault.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServiceInjectorDefault.java
index fc0b23502e..14729076d7 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServiceInjectorDefault.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServiceInjectorDefault.java
@@ -25,6 +25,7 @@ import javax.inject.Named;
import org.apache.isis.applib.annotation.PriorityPrecedence;
import org.apache.isis.applib.services.inject.ServiceInjector;
+import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/classsubstitutor/ClassSubstitutorDefault.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/classsubstitutor/ClassSubstitutorDefault.java
index 209eb9425a..d046ef4f49 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/classsubstitutor/ClassSubstitutorDefault.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/classsubstitutor/ClassSubstitutorDefault.java
@@ -24,7 +24,7 @@ import org.springframework.stereotype.Component;
import org.apache.isis.applib.annotation.PriorityPrecedence;
import org.apache.isis.applib.graph.tree.TreeAdapter;
-
+import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
@Component
@Named(IsisModuleCoreMetamodel.NAMESPACE + ".ClassSubstitutorDefault")
@javax.annotation.Priority(PriorityPrecedence.MIDPOINT)
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/classsubstitutor/ClassSubstitutorForCollections.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/classsubstitutor/ClassSubstitutorForCollections.java
index 92a7f498a9..736a2dde67 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/classsubstitutor/ClassSubstitutorForCollections.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/classsubstitutor/ClassSubstitutorForCollections.java
@@ -29,6 +29,7 @@ import javax.inject.Named;
import org.springframework.stereotype.Component;
import org.apache.isis.applib.annotation.PriorityPrecedence;
+import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
import lombok.NonNull;
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/classsubstitutor/ClassSubstitutorForDomainObjects.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/classsubstitutor/ClassSubstitutorForDomainObjects.java
index db9956a772..26b2869af6 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/classsubstitutor/ClassSubstitutorForDomainObjects.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/classsubstitutor/ClassSubstitutorForDomainObjects.java
@@ -26,6 +26,7 @@ import org.springframework.stereotype.Component;
import org.apache.isis.applib.annotation.PriorityPrecedence;
import org.apache.isis.core.config.beans.IsisBeanMetaData;
import org.apache.isis.core.config.beans.IsisBeanTypeRegistry;
+import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
import lombok.NonNull;
import lombok.val;
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/classsubstitutor/ClassSubstitutorRegistry.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/classsubstitutor/ClassSubstitutorRegistry.java
index f0c1118944..3d0fd6e9c5 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/classsubstitutor/ClassSubstitutorRegistry.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/classsubstitutor/ClassSubstitutorRegistry.java
@@ -30,6 +30,7 @@ import org.springframework.stereotype.Component;
import org.apache.isis.applib.annotation.PriorityPrecedence;
import org.apache.isis.commons.internal.collections._Maps;
import org.apache.isis.commons.internal.functions._Predicates;
+import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
import
org.apache.isis.core.metamodel.services.classsubstitutor.ClassSubstitutor.Substitution;
import lombok.val;
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/events/MetamodelEventService.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/events/MetamodelEventService.java
index a4e8a52712..921d5cb9f2 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/events/MetamodelEventService.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/events/MetamodelEventService.java
@@ -34,6 +34,7 @@ import org.apache.isis.applib.events.ui.CssClassUiEvent;
import org.apache.isis.applib.events.ui.IconUiEvent;
import org.apache.isis.applib.events.ui.LayoutUiEvent;
import org.apache.isis.applib.events.ui.TitleUiEvent;
+import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
import lombok.Builder;
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/exceprecog/ExceptionRecognizerForRecoverableException.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/exceprecog/ExceptionRecognizerForRecoverableException.java
index 6fced652b0..69b85e7803 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/exceprecog/ExceptionRecognizerForRecoverableException.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/exceprecog/ExceptionRecognizerForRecoverableException.java
@@ -29,6 +29,7 @@ import org.apache.isis.applib.exceptions.RecoverableException;
import org.apache.isis.applib.services.exceprecog.Category;
import org.apache.isis.applib.services.exceprecog.ExceptionRecognizer;
import org.apache.isis.applib.services.exceprecog.ExceptionRecognizerForType;
+import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
/**
* Framework-provided implementation of {@link ExceptionRecognizer},
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridLoaderServiceDefault.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridLoaderServiceDefault.java
index b5ce896b50..7aaf53f85c 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridLoaderServiceDefault.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridLoaderServiceDefault.java
@@ -42,6 +42,7 @@ import org.apache.isis.commons.internal.reflection._Reflect;
import org.apache.isis.commons.internal.reflection._Reflect.InterfacePolicy;
import org.apache.isis.commons.internal.resources._Resources;
import org.apache.isis.core.config.environment.IsisSystemEnvironment;
+import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridReaderUsingJaxb.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridReaderUsingJaxb.java
index 29336dcbd9..f12c178295 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridReaderUsingJaxb.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridReaderUsingJaxb.java
@@ -35,6 +35,7 @@ import org.apache.isis.applib.services.grid.GridSystemService;
import org.apache.isis.applib.services.jaxb.JaxbService;
import org.apache.isis.applib.services.registry.ServiceRegistry;
import org.apache.isis.commons.internal.collections._Arrays;
+import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
import lombok.RequiredArgsConstructor;
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridServiceDefault.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridServiceDefault.java
index 780a1b6042..b10b6bf7d2 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridServiceDefault.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridServiceDefault.java
@@ -37,6 +37,7 @@ import org.apache.isis.applib.services.grid.GridSystemService;
import org.apache.isis.commons.internal.base._Casts;
import org.apache.isis.commons.internal.collections._Lists;
import org.apache.isis.commons.internal.collections._Sets;
+import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
import lombok.RequiredArgsConstructor;
import lombok.val;
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap/GridSystemServiceBootstrap.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap/GridSystemServiceBootstrap.java
index ad93b3a9de..bb9ae7088f 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap/GridSystemServiceBootstrap.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap/GridSystemServiceBootstrap.java
@@ -61,6 +61,7 @@ import org.apache.isis.commons.internal.collections._Sets;
import org.apache.isis.commons.internal.exceptions._Exceptions;
import org.apache.isis.commons.internal.resources._Resources;
import org.apache.isis.core.config.environment.IsisSystemEnvironment;
+import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
import
org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacet;
import
org.apache.isis.core.metamodel.facets.members.layout.group.GroupIdAndName;
import
org.apache.isis.core.metamodel.facets.members.layout.group.LayoutGroupFacet;
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/layout/LayoutServiceDefault.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/layout/LayoutServiceDefault.java
index 22bdf1665f..9ced0ed771 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/layout/LayoutServiceDefault.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/layout/LayoutServiceDefault.java
@@ -38,6 +38,7 @@ import org.apache.isis.applib.services.layout.Style;
import org.apache.isis.applib.services.menu.MenuBarsService;
import org.apache.isis.applib.util.ZipWriter;
import org.apache.isis.commons.internal.collections._Maps;
+import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
import org.apache.isis.core.metamodel.facets.object.grid.GridFacet;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
index 68639464f0..9de2ade501 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
@@ -45,6 +45,7 @@ import
org.apache.isis.applib.services.metamodel.MetaModelService;
import org.apache.isis.commons.internal.base._Strings;
import org.apache.isis.commons.internal.collections._Lists;
import org.apache.isis.commons.internal.exceptions._Exceptions;
+import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
import
org.apache.isis.core.metamodel.facets.members.publish.command.CommandPublishingFacet;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.MixedIn;
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/registry/ServiceRegistryDefault.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/registry/ServiceRegistryDefault.java
index 94608ba903..1210a4a0c3 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/registry/ServiceRegistryDefault.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/registry/ServiceRegistryDefault.java
@@ -39,6 +39,7 @@ import org.apache.isis.commons.internal.collections._Maps;
import org.apache.isis.commons.internal.ioc._ManagedBeanAdapter;
import org.apache.isis.core.config.beans.IsisBeanTypeRegistry;
import org.apache.isis.core.config.environment.IsisSystemEnvironment;
+import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
import lombok.val;
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/tablecol/TableColumnOrderServiceDefault.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/tablecol/TableColumnOrderServiceDefault.java
index 098c48639b..1c172f1e95 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/tablecol/TableColumnOrderServiceDefault.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/tablecol/TableColumnOrderServiceDefault.java
@@ -28,6 +28,7 @@ import org.springframework.stereotype.Service;
import org.apache.isis.applib.annotation.PriorityPrecedence;
import org.apache.isis.applib.services.tablecol.TableColumnOrderService;
+import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
/**
* Used as a identity fallback.
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/tablecol/TableColumnOrderServiceUsingTxtFile.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/tablecol/TableColumnOrderServiceUsingTxtFile.java
index 88d5100441..3c757b800a 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/tablecol/TableColumnOrderServiceUsingTxtFile.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/tablecol/TableColumnOrderServiceUsingTxtFile.java
@@ -33,6 +33,7 @@ import org.apache.isis.applib.annotation.PropertyLayout;
import org.apache.isis.applib.services.tablecol.TableColumnOrderService;
import org.apache.isis.commons.internal.base._Text;
import org.apache.isis.commons.internal.resources._Resources;
+import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
import lombok.val;
import lombok.extern.log4j.Log4j2;
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ProgrammingModelServiceDefault.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ProgrammingModelServiceDefault.java
index cfa61f0fd2..d95197932a 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ProgrammingModelServiceDefault.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ProgrammingModelServiceDefault.java
@@ -27,6 +27,7 @@ import org.springframework.stereotype.Service;
import org.apache.isis.applib.annotation.PriorityPrecedence;
import org.apache.isis.commons.internal.base._Lazy;
+import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
import org.apache.isis.core.metamodel.context.MetaModelContext;
import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderDefault.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderDefault.java
index 3572587983..66afd57dfa 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderDefault.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderDefault.java
@@ -62,6 +62,7 @@ import org.apache.isis.core.config.beans.IsisBeanTypeRegistry;
import org.apache.isis.core.config.environment.IsisSystemEnvironment;
import org.apache.isis.core.config.metamodel.specloader.IntrospectionMode;
import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
+import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
import org.apache.isis.core.metamodel.commons.ClassUtil;
import org.apache.isis.core.metamodel.context.MetaModelContext;
import org.apache.isis.core.metamodel.facetapi.Facet;
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuetypes/ValueSemanticsResolverDefault.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuetypes/ValueSemanticsResolverDefault.java
index 42c6097371..eab5c3618d 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuetypes/ValueSemanticsResolverDefault.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuetypes/ValueSemanticsResolverDefault.java
@@ -38,6 +38,7 @@ import org.apache.isis.commons.collections.Can;
import org.apache.isis.commons.internal.base._Casts;
import org.apache.isis.commons.internal.base._NullSafe;
import org.apache.isis.commons.internal.collections._Maps;
+import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
import
org.apache.isis.core.metamodel.valuesemantics.EnumValueSemanticsAbstract;
import lombok.NonNull;
diff --git
a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/repository/RepositoryServiceDefault.java
b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/repository/RepositoryServiceDefault.java
index 8388d8d0c9..3c00338c64 100644
---
a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/repository/RepositoryServiceDefault.java
+++
b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/repository/RepositoryServiceDefault.java
@@ -51,6 +51,7 @@ import
org.apache.isis.core.metamodel.objectmanager.query.ObjectBulkLoader;
import org.apache.isis.core.metamodel.spec.ManagedObjects;
import org.apache.isis.core.metamodel.spec.ManagedObjects.EntityUtil;
import org.apache.isis.core.metamodel.spec.ManagedObjects.UnwrapUtil;
+import org.apache.isis.core.runtimeservices.IsisModuleCoreRuntimeServices;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
diff --git
a/extensions/security/audittrail/applib/src/test/java/org/apache/isis/audittrail/applib/AuditTrailIntegTestAbstract.java
b/extensions/security/audittrail/applib/src/test/java/org/apache/isis/audittrail/applib/AuditTrailIntegTestAbstract.java
index e54db3d6d7..98c7a42c07 100644
---
a/extensions/security/audittrail/applib/src/test/java/org/apache/isis/audittrail/applib/AuditTrailIntegTestAbstract.java
+++
b/extensions/security/audittrail/applib/src/test/java/org/apache/isis/audittrail/applib/AuditTrailIntegTestAbstract.java
@@ -43,7 +43,7 @@ import
org.apache.isis.testing.integtestsupport.applib.IsisIntegrationTestAbstra
import lombok.Getter;
import lombok.RequiredArgsConstructor;
-public abstract class SessionLogIntegTestAbstract extends
IsisIntegrationTestAbstract {
+public abstract class AuditTrailIntegTestAbstract extends
IsisIntegrationTestAbstract {
@Value
@@ -60,81 +60,6 @@ public abstract class SessionLogIntegTestAbstract extends
IsisIntegrationTestAbs
void setUp() {
}
- @Test
- void login_and_logout() {
-
- List<? extends SessionLogEntry> sessions;
- SessionLogEntry session;
- Optional<? extends SessionLogEntry> sessionIfAny;
-
- // given
- sessions = sessionLogEntryRepository.findActiveSessions();
- Assertions.assertThat(sessions).isEmpty();
-
- // when
- Session session1 = new Session("fred",
Instant.now().minus(Duration.ofDays(2)));
-
- sessionSubscriber.log(SessionSubscriber.Type.LOGIN, session1.username,
session1.getDate(), SessionSubscriber.CausedBy.USER, session1.sessionGuid,
session1.httpSessionId);
-
- // then
- sessions = sessionLogEntryRepository.findActiveSessions();
- Assertions.assertThat(sessions).hasSize(1);
- session = sessions.get(0);
-
Assertions.assertThat(session.getSessionGuid()).isEqualTo(session1.sessionGuid);
-
- // when
- Session session2 = new Session("mary",
Instant.now().minus(Duration.ofDays(1)));
-
- sessionSubscriber.log(SessionSubscriber.Type.LOGIN, session2.username,
session2.getDate(), SessionSubscriber.CausedBy.USER, session2.sessionGuid,
session2.httpSessionId);
-
- // then
- sessions = sessionLogEntryRepository.findActiveSessions();
- Assertions.assertThat(sessions).hasSize(2);
-
- // then
- sessions = sessionLogEntryRepository.findByUsername(session1.username);
- Assertions.assertThat(sessions).hasSize(1);
-
Assertions.assertThat(sessions.get(0)).extracting(SessionLogEntry::getUsername).isEqualTo(session1.username);
-
- sessionIfAny =
sessionLogEntryRepository.findBySessionGuid(session2.sessionGuid);
- Assertions.assertThat(sessionIfAny).isPresent();
-
Assertions.assertThat(sessionIfAny).get().extracting(SessionLogEntry::getUsername).isEqualTo(session2.username);
-
- sessionIfAny =
sessionLogEntryRepository.findBySessionGuidStr(session1.sessionGuid.toString());
- Assertions.assertThat(sessionIfAny).isPresent();
-
Assertions.assertThat(sessionIfAny).get().extracting(SessionLogEntry::getUsername).isEqualTo(session1.username);
-
- sessions =
sessionLogEntryRepository.findByUsernameAndStrictlyAfter(session1.username,
Timestamp.from(session1.instant.plus(Duration.ofMillis(10))));
- Assertions.assertThat(sessions).isEmpty();
-
- sessions =
sessionLogEntryRepository.findByUsernameAndStrictlyAfter(session1.username,
Timestamp.from(session1.instant.minus(Duration.ofMillis(10))));
- Assertions.assertThat(sessions).hasSize(1);
-
- sessions =
sessionLogEntryRepository.findByUsernameAndStrictlyBefore(session1.username,
Timestamp.from(session1.instant.minus(Duration.ofMillis(10))));
- Assertions.assertThat(sessions).isEmpty();
-
- sessions =
sessionLogEntryRepository.findByUsernameAndStrictlyBefore(session1.username,
Timestamp.from(session1.instant.plus(Duration.ofMillis(10))));
- Assertions.assertThat(sessions).hasSize(1);
-
- sessions =
sessionLogEntryRepository.findRecentByUsername(session1.username);
- Assertions.assertThat(sessions).hasSize(1);
-
- // when
- sessionSubscriber.log(SessionSubscriber.Type.LOGOUT, null,
session1.getDate(), SessionSubscriber.CausedBy.USER, session1.sessionGuid,
null);
-
- // then
- sessions = sessionLogEntryRepository.findActiveSessions();
- Assertions.assertThat(sessions).hasSize(1);
-
Assertions.assertThat(sessions.get(0)).extracting(SessionLogEntry::getUsername).isEqualTo(session2.username);
-
- sessionSubscriber.log(SessionSubscriber.Type.LOGOUT, null,
session2.getDate(), SessionSubscriber.CausedBy.USER, session2.sessionGuid,
null);
-
- // then
- sessions = sessionLogEntryRepository.findActiveSessions();
- Assertions.assertThat(sessions).isEmpty();
-
-
- }
@Inject @Qualifier("default") SessionSubscriber sessionSubscriber;
@Inject SessionLogEntryRepository<? extends SessionLogEntry>
sessionLogEntryRepository;
diff --git
a/extensions/security/audittrail/persistence-jdo/src/main/java/org/apache/isis/audittrail/jdo/IsisModuleExtAuditTrailPersistenceJdo.java
b/extensions/security/audittrail/persistence-jdo/src/main/java/org/apache/isis/audittrail/jdo/IsisModuleExtAuditTrailPersistenceJdo.java
index 21ae33a935..ee75372760 100644
---
a/extensions/security/audittrail/persistence-jdo/src/main/java/org/apache/isis/audittrail/jdo/IsisModuleExtAuditTrailPersistenceJdo.java
+++
b/extensions/security/audittrail/persistence-jdo/src/main/java/org/apache/isis/audittrail/jdo/IsisModuleExtAuditTrailPersistenceJdo.java
@@ -23,10 +23,10 @@ package org.apache.isis.audittrail.jdo;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
+import org.apache.isis.audittrail.applib.IsisModuleExtAuditTrailApplib;
+import org.apache.isis.audittrail.jdo.dom.AuditTrailEntry;
+import org.apache.isis.audittrail.jdo.dom.AuditTrailEntryRepository;
import
org.apache.isis.persistence.jdo.datanucleus.IsisModulePersistenceJdoDatanucleus;
-import org.apache.isis.sessionlog.applib.IsisModuleExtSessionLogApplib;
-import org.apache.isis.sessionlog.jdo.dom.SessionLogEntry;
-import org.apache.isis.sessionlog.jdo.dom.SessionLogEntryRepository;
import org.apache.isis.testing.fixtures.applib.IsisModuleTestingFixturesApplib;
import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
import org.apache.isis.testing.fixtures.applib.modules.ModuleWithFixtures;
@@ -37,23 +37,23 @@ import
org.apache.isis.testing.fixtures.applib.teardown.jdo.TeardownFixtureJdoAb
@Import({
// modules
IsisModuleTestingFixturesApplib.class,
- IsisModuleExtSessionLogApplib.class,
+ IsisModuleExtAuditTrailApplib.class,
IsisModulePersistenceJdoDatanucleus.class,
// services
- SessionLogEntryRepository.class,
+ AuditTrailEntryRepository.class,
// entities, eager meta-model introspection
- SessionLogEntry.class,
+ AuditTrailEntry.class,
})
-public class IsisModuleExtSessionLogPersistenceJdo implements
ModuleWithFixtures {
+public class IsisModuleExtAuditTrailPersistenceJdo implements
ModuleWithFixtures {
@Override
public FixtureScript getTeardownFixture() {
return new TeardownFixtureJdoAbstract() {
@Override
protected void execute(final ExecutionContext executionContext) {
- deleteFrom(SessionLogEntry.class);
+ deleteFrom(AuditTrailEntry.class);
}
};
}
diff --git
a/extensions/security/audittrail/persistence-jdo/src/main/java/org/apache/isis/audittrail/jdo/dom/AuditTrailEntry.java
b/extensions/security/audittrail/persistence-jdo/src/main/java/org/apache/isis/audittrail/jdo/dom/AuditTrailEntry.java
index eacf27f585..627e2358b4 100644
---
a/extensions/security/audittrail/persistence-jdo/src/main/java/org/apache/isis/audittrail/jdo/dom/AuditTrailEntry.java
+++
b/extensions/security/audittrail/persistence-jdo/src/main/java/org/apache/isis/audittrail/jdo/dom/AuditTrailEntry.java
@@ -36,6 +36,10 @@ import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;
import javax.jdo.annotations.Queries;
import javax.jdo.annotations.Query;
+import javax.jdo.annotations.Unique;
+import javax.jdo.annotations.Uniques;
+import javax.jdo.annotations.Version;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import org.apache.isis.applib.Identifier;
@@ -45,11 +49,13 @@ import org.apache.isis.applib.annotation.Programmatic;
import org.apache.isis.applib.annotation.Property;
import org.apache.isis.applib.annotation.PropertyLayout;
import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.applib.jaxb.PersistentEntityAdapter;
import org.apache.isis.applib.mixins.system.DomainChangeRecord;
import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.applib.util.ObjectContracts;
import org.apache.isis.applib.util.TitleBuffer;
import org.apache.isis.audittrail.applib.IsisModuleExtAuditTrailApplib;
+import org.apache.isis.audittrail.applib.dom.AuditTrailEntry;
import org.apache.isis.audittrail.applib.dom.AuditTrailEntry.Nq;
import lombok.Getter;
@@ -58,18 +64,11 @@ import lombok.Setter;
identityType = IdentityType.DATASTORE,
schema = AuditTrailEntry.SCHEMA,
table = AuditTrailEntry.TABLE)
-@DatastoreIdentity(
- strategy = IdGeneratorStrategy.IDENTITY,
- column = "id")
@Indices({
- @Index(name="pk", unique="true",
- columns={
- @Column(name="interactionId"),
- @Column(name="sequence"),
- @Column(name="target"),
- @Column(name="propertyId")
- }),
- @Index(name = "target_timestamp_IDX", members = { "target", "timestamp" },
unique="false"),
+ @Index(name = "target_propertyId_timestamp_IDX", members = { "target",
"propertyId", "timestamp" }, unique = "false"),
+ @Index(name = "target_timestamp_IDX", members = { "target",
"timestamp" }, unique = "false"),
+ @Index(name = "timestamp_IDX", members = { "timestamp" }, unique =
"false"),
+ @Index(name = "interactionId_IDX", members = { "interactionId" },
unique = "false")
})
@Queries( {
@Query(
@@ -152,6 +151,9 @@ import lombok.Setter;
+ " ORDER BY timestamp DESC "
+ " RANGE 0,30")
})
+@XmlJavaTypeAdapter(PersistentEntityAdapter.class)
+@DatastoreIdentity(strategy = IdGeneratorStrategy.IDENTITY, column = "id")
+@Version(column = "version")
@Named(AuditTrailEntry.LOGICAL_TYPE_NAME)
@DomainObject(
editing = Editing.DISABLED
@@ -211,7 +213,6 @@ extends
org.apache.isis.audittrail.applib.dom.AuditTrailEntry {
private String logicalMemberIdentifier;
-
@Column(allowsNull = PropertyId.ALLOWS_NULL, length =
PropertyId.MAX_LENGTH)
@PropertyId
@Getter @Setter
diff --git
a/extensions/security/audittrail/persistence-jdo/src/test/java/org/apache/isis/sessionlog/jdo/SessionLog_IntegTest.java
b/extensions/security/audittrail/persistence-jdo/src/test/java/org/apache/isis/audittrail/jdo/AuditTrail_IntegTest.java
similarity index 79%
copy from
extensions/security/audittrail/persistence-jdo/src/test/java/org/apache/isis/sessionlog/jdo/SessionLog_IntegTest.java
copy to
extensions/security/audittrail/persistence-jdo/src/test/java/org/apache/isis/audittrail/jdo/AuditTrail_IntegTest.java
index 0ae5371dea..6536dd103a 100644
---
a/extensions/security/audittrail/persistence-jdo/src/test/java/org/apache/isis/sessionlog/jdo/SessionLog_IntegTest.java
+++
b/extensions/security/audittrail/persistence-jdo/src/test/java/org/apache/isis/audittrail/jdo/AuditTrail_IntegTest.java
@@ -16,12 +16,8 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.sessionlog.jdo;
+package org.apache.isis.audittrail.jdo;
-import javax.inject.Inject;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.test.context.SpringBootTest;
@@ -33,16 +29,13 @@ import org.springframework.test.context.ActiveProfiles;
import org.apache.isis.core.config.presets.IsisPresets;
import org.apache.isis.core.runtimeservices.IsisModuleCoreRuntimeServices;
import org.apache.isis.security.bypass.IsisModuleSecurityBypass;
-import org.apache.isis.sessionlog.applib.SessionLogIntegTestAbstract;
-import org.apache.isis.sessionlog.jdo.dom.SessionLogEntryRepository;
-
-import lombok.Getter;
+import org.apache.isis.sessionlog.applib.AuditTrailIntegTestAbstract;
@SpringBootTest(
- classes = SessionLog_IntegTest.AppManifest.class
+ classes = AuditTrail_IntegTest.AppManifest.class
)
@ActiveProfiles("test")
-public class SessionLog_IntegTest extends SessionLogIntegTestAbstract {
+public class AuditTrail_IntegTest extends AuditTrailIntegTestAbstract {
@SpringBootConfiguration
@@ -50,7 +43,7 @@ public class SessionLog_IntegTest extends
SessionLogIntegTestAbstract {
@Import({
IsisModuleCoreRuntimeServices.class,
IsisModuleSecurityBypass.class,
- IsisModuleExtSessionLogPersistenceJdo.class,
+ IsisModuleExtAuditTrailPersistenceJdo.class,
})
@PropertySources({
@PropertySource(IsisPresets.UseLog4j2Test),
diff --git
a/extensions/security/audittrail/persistence-jdo/src/test/resources/application-test.yml
b/extensions/security/audittrail/persistence-jdo/src/test/resources/application-test.yml
index 7300d77584..8f81a2a0d4 100644
---
a/extensions/security/audittrail/persistence-jdo/src/test/resources/application-test.yml
+++
b/extensions/security/audittrail/persistence-jdo/src/test/resources/application-test.yml
@@ -17,7 +17,7 @@
isis:
persistence:
schema:
- auto-create-schemas: "ISISEXTSESSIONLOG"
+ auto-create-schemas: "ISISEXTAUDITTRAIL"
datanucleus:
diff --git
a/extensions/security/sessionlog/persistence-jpa/src/main/java/org/apache/isis/sessionlog/jpa/IsisModuleExtSessionLogPersistenceJpa.java
b/extensions/security/audittrail/persistence-jpa/src/main/java/org/apache/isis/audittrail/jpa/IsisModuleExtAuditTrailPersistenceJpa.java
similarity index 95%
copy from
extensions/security/sessionlog/persistence-jpa/src/main/java/org/apache/isis/sessionlog/jpa/IsisModuleExtSessionLogPersistenceJpa.java
copy to
extensions/security/audittrail/persistence-jpa/src/main/java/org/apache/isis/audittrail/jpa/IsisModuleExtAuditTrailPersistenceJpa.java
index eb2f74fea1..a2b8bc5afd 100644
---
a/extensions/security/sessionlog/persistence-jpa/src/main/java/org/apache/isis/sessionlog/jpa/IsisModuleExtSessionLogPersistenceJpa.java
+++
b/extensions/security/audittrail/persistence-jpa/src/main/java/org/apache/isis/audittrail/jpa/IsisModuleExtAuditTrailPersistenceJpa.java
@@ -18,7 +18,7 @@
*
*/
-package org.apache.isis.sessionlog.jpa;
+package org.apache.isis.audittrail.jpa;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.context.annotation.Configuration;
@@ -52,7 +52,7 @@ import
org.apache.isis.testing.fixtures.applib.teardown.jdo.TeardownFixtureJdoAb
@EntityScan(basePackageClasses = {
SessionLogEntry.class,
})
-public class IsisModuleExtSessionLogPersistenceJpa implements
ModuleWithFixtures {
+public class IsisModuleExtAuditTrailPersistenceJpa implements
ModuleWithFixtures {
@Override
public FixtureScript getTeardownFixture() {
diff --git
a/extensions/security/audittrail/persistence-jpa/src/main/java/org/apache/isis/audittrail/jpa/dom/AuditTrailEntry.java
b/extensions/security/audittrail/persistence-jpa/src/main/java/org/apache/isis/audittrail/jpa/dom/AuditTrailEntry.java
new file mode 100644
index 0000000000..aa4bdb8e54
--- /dev/null
+++
b/extensions/security/audittrail/persistence-jpa/src/main/java/org/apache/isis/audittrail/jpa/dom/AuditTrailEntry.java
@@ -0,0 +1,232 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.isis.audittrail.jpa.dom;
+
+import java.util.UUID;
+
+import javax.inject.Named;
+import javax.persistence.Column;
+import javax.persistence.Convert;
+import javax.persistence.Entity;
+import javax.persistence.EntityListeners;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Index;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.Table;
+import javax.persistence.UniqueConstraint;
+import javax.persistence.Version;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.jaxb.PersistentEntityAdapter;
+import org.apache.isis.applib.services.bookmark.Bookmark;
+import org.apache.isis.audittrail.applib.dom.AuditTrailEntry.Nq;
+import org.apache.isis.persistence.jpa.applib.integration.IsisEntityListener;
+import
org.apache.isis.persistence.jpa.integration.typeconverters.applib.IsisBookmarkConverter;
+import
org.apache.isis.persistence.jpa.integration.typeconverters.java.util.JavaUtilUuidConverter;
+
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+@Entity
+@Table(
+ schema = AuditTrailEntry.SCHEMA,
+ name = AuditTrailEntry.TABLE,
+ indexes = {
+ @Index(name = "target_propertyId_timestamp_IDX", columnList =
"target, propertyId, timestamp", unique = false),
+ @Index(name = "target_timestamp_IDX", columnList = "target,
timestamp", unique = false),
+ @Index(name = "timestamp_IDX", columnList = "timestamp",
unique = false)
+ @Index(name = "interactionId_IDX", columnList =
"interactionId", unique = false)
+ }
+)
+@NamedQueries( {
+ @NamedQuery(
+ name = Nq.FIND_BY_INTERACTION_ID,
+ query = "SELECT e "
+ + " FROM AuditTrailEntry e "
+ + " WHERE e.interactionId = :interactionId"),
+ @NamedQuery(
+ name = Nq.FIND_FIRST_BY_TARGET,
+ query = "SELECT e "
+ + " FROM AuditTrailEntry e "
+ + " WHERE e.target = :target "
+ + " ORDER BY e.timestamp ASC "), // programmatic range 0,2
+ @NamedQuery(
+ name = Nq.FIND_RECENT_BY_TARGET,
+ query = "SELECT e "
+ + " FROM AuditTrailEntry e "
+ + " WHERE e.target = :target "
+ + " ORDER BY e.timestamp DESC "), // programmatic range
0,100
+ @NamedQuery(
+ name = Nq.FIND_BY_TARGET_AND_TIMESTAMP_BETWEEN,
+ query = "SELECT e "
+ + " FROM AuditTrailEntry e "
+ + " WHERE e.target = :target "
+ + " AND e.timestamp >= :from "
+ + " AND e.timestamp <= :to "
+ + "ORDER BY e.timestamp DESC"),
+ @NamedQuery(
+ name = Nq.FIND_BY_TARGET_AND_TIMESTAMP_AFTER,
+ query = "SELECT e "
+ + " FROM AuditTrailEntry e "
+ + " WHERE e.target = :target "
+ + " AND e.timestamp >= :from "
+ + " ORDER BY e.timestamp DESC"),
+ @NamedQuery(
+ name = Nq.FIND_BY_TARGET_AND_TIMESTAMP_BEFORE,
+ query = "SELECT e "
+ + " FROM AuditTrailEntry e "
+ + " WHERE e.target = :target "
+ + " AND e.timestamp <= :to "
+ + " ORDER BY e.timestamp DESC"),
+ @NamedQuery(
+ name = Nq.FIND_BY_TARGET,
+ query = "SELECT e "
+ + " FROM AuditTrailEntry e "
+ + " WHERE e.target = :target "
+ + " ORDER BY e.timestamp DESC"),
+ @NamedQuery(
+ name = Nq.FIND_BY_TIMESTAMP_BETWEEN,
+ query = "SELECT e "
+ + " FROM AuditTrailEntry e "
+ + " WHERE timestamp >= :from "
+ + " && timestamp <= :to "
+ + " ORDER BY this.timestamp DESC"),
+ @NamedQuery(
+ name = Nq.FIND_BY_TIMESTAMP_AFTER,
+ query = "SELECT e "
+ + " FROM AuditTrailEntry e "
+ + " WHERE e.timestamp >= :from "
+ + " ORDER BY e.timestamp DESC"),
+ @NamedQuery(
+ name = Nq.FIND_BY_TIMESTAMP_BEFORE,
+ query = "SELECT e "
+ + " FROM AuditTrailEntry e "
+ + " WHERE e.timestamp <= :to "
+ + " ORDER BY e.timestamp DESC"),
+ @NamedQuery(
+ name = Nq.FIND,
+ query = "SELECT e "
+ + " FROM AuditTrailEntry e "
+ + " ORDER BY e.timestamp DESC"),
+ @NamedQuery(
+ name = Nq.FIND_RECENT_BY_TARGET_AND_PROPERTY_ID,
+ query = "SELECT e "
+ + " FROM AuditTrailEntry e "
+ + " WHERE e.target = :target "
+ + " AND e.propertyId = :propertyId "
+ + " ORDER BY e.timestamp DESC ") // programmatic limit 0,30
+})
+@EntityListeners(IsisEntityListener.class)
+@XmlJavaTypeAdapter(PersistentEntityAdapter.class)
+@Named(AuditTrailEntry.LOGICAL_TYPE_NAME)
+@DomainObject(
+ editing = Editing.DISABLED
+)
+public class AuditTrailEntry
+extends org.apache.isis.audittrail.applib.dom.AuditTrailEntry {
+
+ static final String FQCN =
"org.apache.isis.audittrail.jdo.dom.AuditTrailEntry";
+
+ public AuditTrailEntry() {
+ this(null, null, null, null, null, null, null, null);
+ }
+
+ public AuditTrailEntry(
+ final java.sql.Timestamp timestamp,
+ final String username,
+ final Bookmark target,
+ final String logicalMemberIdentifier,
+ final String propertyId,
+ final String preValue,
+ final String postValue,
+ final UUID interactionId) {
+ super(timestamp, username, target, logicalMemberIdentifier,
propertyId, preValue, postValue, interactionId);
+ }
+
+ @Id
+ @GeneratedValue
+ private Long id;
+
+
+ @Version
+ private Long version;
+
+
+ @Column(nullable = Username.NULLABLE, length = Username.MAX_LENGTH)
+ @Username
+ @Getter @Setter
+ private String username;
+
+
+ @Column(nullable = Timestamp.NULLABLE)
+ @Timestamp
+ @Getter @Setter
+ private java.sql.Timestamp timestamp;
+
+
+ @Convert(converter = JavaUtilUuidConverter.class)
+ @Column(nullable = InteractionId.NULLABLE, length =
InteractionId.MAX_LENGTH)
+ @InteractionId
+ @Getter @Setter
+ private UUID interactionId;
+
+
+ @Column(nullable = Sequence.NULLABLE)
+ @Sequence
+ @Getter @Setter
+ private int sequence;
+
+
+ @Convert(converter = IsisBookmarkConverter.class)
+ @Column(nullable = Target.NULLABLE, length = Target.MAX_LENGTH)
+ @Target
+ @Getter @Setter
+ private Bookmark target;
+
+
+ @Column(nullable = LogicalMemberIdentifier.NULLABLE, length =
LogicalMemberIdentifier.MAX_LENGTH)
+ @LogicalMemberIdentifier
+ @Getter @Setter
+ private String logicalMemberIdentifier;
+
+
+ @Column(nullable = PropertyId.NULLABLE, length = PropertyId.MAX_LENGTH)
+ @PropertyId
+ @Getter @Setter
+ private String propertyId;
+
+
+ @Column(nullable = PreValue.NULLABLE, length = PreValue.MAX_LENGTH)
+ @PreValue
+ @Getter @Setter
+ private String preValue;
+
+
+ @Column(nullable = PostValue.NULLABLE, length = PostValue.MAX_LENGTH)
+ @PostValue
+ @Getter @Setter
+ private String postValue;
+
+}
diff --git
a/extensions/security/audittrail/persistence-jpa/src/main/java/org/apache/isis/audittrail/jpa/dom/AuditTrailEntryRepository.java
b/extensions/security/audittrail/persistence-jpa/src/main/java/org/apache/isis/audittrail/jpa/dom/AuditTrailEntryRepository.java
new file mode 100644
index 0000000000..fdb7284daf
--- /dev/null
+++
b/extensions/security/audittrail/persistence-jpa/src/main/java/org/apache/isis/audittrail/jpa/dom/AuditTrailEntryRepository.java
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.isis.audittrail.jpa.dom;
+
+import org.springframework.stereotype.Service;
+
+import org.apache.isis.audittrail.applib.dom.AuditTrailEntry;
+
+@Service
+public class AuditTrailEntryRepository extends
org.apache.isis.audittrail.applib.dom.AuditTrailEntryRepository<AuditTrailEntry>
{
+
+ public AuditTrailEntryRepository() {
+ super(AuditTrailEntry.class);
+ }
+}
diff --git
a/extensions/security/audittrail/persistence-jdo/src/test/java/org/apache/isis/sessionlog/jdo/SessionLog_IntegTest.java
b/extensions/security/audittrail/persistence-jpa/src/test/java/org/apache/isis/audittrail/jpa/AuditTrail_IntegTest.java
similarity index 79%
rename from
extensions/security/audittrail/persistence-jdo/src/test/java/org/apache/isis/sessionlog/jdo/SessionLog_IntegTest.java
rename to
extensions/security/audittrail/persistence-jpa/src/test/java/org/apache/isis/audittrail/jpa/AuditTrail_IntegTest.java
index 0ae5371dea..368b4bb0e0 100644
---
a/extensions/security/audittrail/persistence-jdo/src/test/java/org/apache/isis/sessionlog/jdo/SessionLog_IntegTest.java
+++
b/extensions/security/audittrail/persistence-jpa/src/test/java/org/apache/isis/audittrail/jpa/AuditTrail_IntegTest.java
@@ -16,12 +16,8 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.sessionlog.jdo;
+package org.apache.isis.audittrail.jpa;
-import javax.inject.Inject;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.test.context.SpringBootTest;
@@ -33,16 +29,13 @@ import org.springframework.test.context.ActiveProfiles;
import org.apache.isis.core.config.presets.IsisPresets;
import org.apache.isis.core.runtimeservices.IsisModuleCoreRuntimeServices;
import org.apache.isis.security.bypass.IsisModuleSecurityBypass;
-import org.apache.isis.sessionlog.applib.SessionLogIntegTestAbstract;
-import org.apache.isis.sessionlog.jdo.dom.SessionLogEntryRepository;
-
-import lombok.Getter;
+import org.apache.isis.sessionlog.applib.AuditTrailIntegTestAbstract;
@SpringBootTest(
- classes = SessionLog_IntegTest.AppManifest.class
+ classes = AuditTrail_IntegTest.AppManifest.class
)
@ActiveProfiles("test")
-public class SessionLog_IntegTest extends SessionLogIntegTestAbstract {
+public class AuditTrail_IntegTest extends AuditTrailIntegTestAbstract {
@SpringBootConfiguration
@@ -50,7 +43,7 @@ public class SessionLog_IntegTest extends
SessionLogIntegTestAbstract {
@Import({
IsisModuleCoreRuntimeServices.class,
IsisModuleSecurityBypass.class,
- IsisModuleExtSessionLogPersistenceJdo.class,
+ IsisModuleExtAuditTrailPersistenceJpa.class,
})
@PropertySources({
@PropertySource(IsisPresets.UseLog4j2Test),
diff --git
a/extensions/security/audittrail/persistence-jdo/src/test/resources/application-test.yml
b/extensions/security/audittrail/persistence-jpa/src/test/resources/application-test.yml
similarity index 84%
copy from
extensions/security/audittrail/persistence-jdo/src/test/resources/application-test.yml
copy to
extensions/security/audittrail/persistence-jpa/src/test/resources/application-test.yml
index 7300d77584..01cf42f46f 100644
---
a/extensions/security/audittrail/persistence-jdo/src/test/resources/application-test.yml
+++
b/extensions/security/audittrail/persistence-jpa/src/test/resources/application-test.yml
@@ -17,10 +17,13 @@
isis:
persistence:
schema:
- auto-create-schemas: "ISISEXTSESSIONLOG"
+ auto-create-schemas: "ISISEXTAUDITTRAIL"
+ extensions:
+ session-log:
+ auto-logout-on-restart: false
+
+spring:
+ jpa:
+ show-sql: true
-datanucleus:
- schema:
- generate-database:
- mode: "create"
diff --git a/extensions/security/audittrail/pom.xml
b/extensions/security/audittrail/pom.xml
index 2a818d943d..38ba37a439 100644
--- a/extensions/security/audittrail/pom.xml
+++ b/extensions/security/audittrail/pom.xml
@@ -89,8 +89,6 @@
<modules>
<module>applib</module>
<module>persistence-jdo</module>
-<!--
<module>persistence-jpa</module>
--->
</modules>
</project>
diff --git
a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/permission/dom/ApplicationPermissionRepository.java
b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/permission/dom/ApplicationPermissionRepository.java
index 8104067469..c74186afe1 100644
---
a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/permission/dom/ApplicationPermissionRepository.java
+++
b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/permission/dom/ApplicationPermissionRepository.java
@@ -22,10 +22,11 @@ import javax.inject.Named;
import org.springframework.stereotype.Repository;
+import org.apache.isis.extensions.secman.applib.IsisModuleExtSecmanApplib;
import
org.apache.isis.extensions.secman.applib.permission.dom.ApplicationPermissionRepositoryAbstract;
@Repository
-@Named(IsisModuleCoreRuntimeServices.NAMESPACE +
".ApplicationPermissionRepository")
+@Named(IsisModuleExtSecmanApplib.NAMESPACE +
".ApplicationPermissionRepository")
public class ApplicationPermissionRepository
extends ApplicationPermissionRepositoryAbstract<ApplicationPermission> {
diff --git
a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/role/dom/ApplicationRoleRepository.java
b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/role/dom/ApplicationRoleRepository.java
index c065bb498a..ba1e1f871c 100644
---
a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/role/dom/ApplicationRoleRepository.java
+++
b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/role/dom/ApplicationRoleRepository.java
@@ -22,10 +22,11 @@ import javax.inject.Named;
import org.springframework.stereotype.Repository;
+import org.apache.isis.extensions.secman.applib.IsisModuleExtSecmanApplib;
import
org.apache.isis.extensions.secman.applib.role.dom.ApplicationRoleRepositoryAbstract;
@Repository
-@Named(IsisModuleCoreRuntimeServices.NAMESPACE + ".ApplicationRoleRepository")
+@Named(IsisModuleExtSecmanApplib.NAMESPACE + ".ApplicationRoleRepository")
public class ApplicationRoleRepository
extends ApplicationRoleRepositoryAbstract<ApplicationRole> {
diff --git
a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/tenancy/dom/ApplicationTenancyRepository.java
b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/tenancy/dom/ApplicationTenancyRepository.java
index 5d3bd7761a..4b93e23a22 100644
---
a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/tenancy/dom/ApplicationTenancyRepository.java
+++
b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/tenancy/dom/ApplicationTenancyRepository.java
@@ -22,10 +22,11 @@ import javax.inject.Named;
import org.springframework.stereotype.Repository;
+import org.apache.isis.extensions.secman.applib.IsisModuleExtSecmanApplib;
import
org.apache.isis.extensions.secman.applib.tenancy.dom.ApplicationTenancyRepositoryAbstract;
@Repository
-@Named(IsisModuleCoreRuntimeServices.NAMESPACE +
".ApplicationTenancyRepository")
+@Named(IsisModuleExtSecmanApplib.NAMESPACE + ".ApplicationTenancyRepository")
public class ApplicationTenancyRepository
extends ApplicationTenancyRepositoryAbstract<ApplicationTenancy> {
diff --git
a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/user/dom/ApplicationUserRepository.java
b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/user/dom/ApplicationUserRepository.java
index f8333cdb4a..a4a214f830 100644
---
a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/user/dom/ApplicationUserRepository.java
+++
b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/user/dom/ApplicationUserRepository.java
@@ -22,10 +22,11 @@ import javax.inject.Named;
import org.springframework.stereotype.Repository;
+import org.apache.isis.extensions.secman.applib.IsisModuleExtSecmanApplib;
import
org.apache.isis.extensions.secman.applib.user.dom.ApplicationUserRepositoryAbstract;
@Repository
-@Named(IsisModuleCoreRuntimeServices.NAMESPACE + ".ApplicationUserRepository")
+@Named(IsisModuleExtSecmanApplib.NAMESPACE + ".ApplicationUserRepository")
public class ApplicationUserRepository
extends ApplicationUserRepositoryAbstract<ApplicationUser> {
diff --git
a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/permission/dom/ApplicationPermissionRepository.java
b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/permission/dom/ApplicationPermissionRepository.java
index ac91ecda96..95614c2cea 100644
---
a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/permission/dom/ApplicationPermissionRepository.java
+++
b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/permission/dom/ApplicationPermissionRepository.java
@@ -22,10 +22,11 @@ import javax.inject.Named;
import org.springframework.stereotype.Repository;
+import org.apache.isis.extensions.secman.applib.IsisModuleExtSecmanApplib;
import
org.apache.isis.extensions.secman.applib.permission.dom.ApplicationPermissionRepositoryAbstract;
@Repository
-@Named(IsisModuleCoreRuntimeServices.NAMESPACE +
".ApplicationPermissionRepository")
+@Named(IsisModuleExtSecmanApplib.NAMESPACE +
".ApplicationPermissionRepository")
public class ApplicationPermissionRepository
extends ApplicationPermissionRepositoryAbstract<ApplicationPermission> {
diff --git
a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/role/dom/ApplicationRoleRepository.java
b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/role/dom/ApplicationRoleRepository.java
index 9c5ea5d5cc..a83e07a80d 100644
---
a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/role/dom/ApplicationRoleRepository.java
+++
b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/role/dom/ApplicationRoleRepository.java
@@ -22,10 +22,11 @@ import javax.inject.Named;
import org.springframework.stereotype.Repository;
+import org.apache.isis.extensions.secman.applib.IsisModuleExtSecmanApplib;
import
org.apache.isis.extensions.secman.applib.role.dom.ApplicationRoleRepositoryAbstract;
@Repository
-@Named(IsisModuleCoreRuntimeServices.NAMESPACE + ".ApplicationRoleRepository")
+@Named(IsisModuleExtSecmanApplib.NAMESPACE + ".ApplicationRoleRepository")
public class ApplicationRoleRepository
extends ApplicationRoleRepositoryAbstract<ApplicationRole> {
diff --git
a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/tenancy/dom/ApplicationTenancyRepository.java
b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/tenancy/dom/ApplicationTenancyRepository.java
index 3c953d8051..6edd02cbfb 100644
---
a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/tenancy/dom/ApplicationTenancyRepository.java
+++
b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/tenancy/dom/ApplicationTenancyRepository.java
@@ -22,10 +22,11 @@ import javax.inject.Named;
import org.springframework.stereotype.Repository;
+import org.apache.isis.extensions.secman.applib.IsisModuleExtSecmanApplib;
import
org.apache.isis.extensions.secman.applib.tenancy.dom.ApplicationTenancyRepositoryAbstract;
@Repository
-@Named(IsisModuleCoreRuntimeServices.NAMESPACE +
".ApplicationTenancyRepository")
+@Named(IsisModuleExtSecmanApplib.NAMESPACE + ".ApplicationTenancyRepository")
public class ApplicationTenancyRepository
extends ApplicationTenancyRepositoryAbstract<ApplicationTenancy> {
diff --git
a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/user/dom/ApplicationUserRepository.java
b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/user/dom/ApplicationUserRepository.java
index 1b1b96b350..d8e4c08504 100644
---
a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/user/dom/ApplicationUserRepository.java
+++
b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/user/dom/ApplicationUserRepository.java
@@ -22,10 +22,11 @@ import javax.inject.Named;
import org.springframework.stereotype.Repository;
+import org.apache.isis.extensions.secman.applib.IsisModuleExtSecmanApplib;
import
org.apache.isis.extensions.secman.applib.user.dom.ApplicationUserRepositoryAbstract;
@Repository
-@Named(IsisModuleCoreRuntimeServices.NAMESPACE + ".ApplicationUserRepository")
+@Named(IsisModuleExtSecmanApplib.NAMESPACE + ".ApplicationUserRepository")
public class ApplicationUserRepository
extends ApplicationUserRepositoryAbstract<ApplicationUser> {
diff --git
a/extensions/security/sessionlog/applib/src/test/java/org/apache/isis/sessionlog/applib/SessionLogIntegTestAbstract.java
b/extensions/security/sessionlog/applib/src/test/java/org/apache/isis/sessionlog/applib/SessionLogIntegTestAbstract.java
index 642247e9d6..10963f788f 100644
---
a/extensions/security/sessionlog/applib/src/test/java/org/apache/isis/sessionlog/applib/SessionLogIntegTestAbstract.java
+++
b/extensions/security/sessionlog/applib/src/test/java/org/apache/isis/sessionlog/applib/SessionLogIntegTestAbstract.java
@@ -136,7 +136,7 @@ public abstract class SessionLogIntegTestAbstract extends
IsisIntegrationTestAbs
}
- @Inject @Qualifier("default") SessionSubscriber sessionSubscriber;
+ @Inject @Qualifier("sessionlog") SessionSubscriber sessionSubscriber;
@Inject SessionLogEntryRepository<? extends SessionLogEntry>
sessionLogEntryRepository;
}
diff --git
a/extensions/security/sessionlog/persistence-jpa/src/main/java/org/apache/isis/sessionlog/jpa/IsisModuleExtSessionLogPersistenceJpa.java
b/extensions/security/sessionlog/persistence-jpa/src/main/java/org/apache/isis/sessionlog/jpa/IsisModuleExtSessionLogPersistenceJpa.java
index eb2f74fea1..8c84444c62 100644
---
a/extensions/security/sessionlog/persistence-jpa/src/main/java/org/apache/isis/sessionlog/jpa/IsisModuleExtSessionLogPersistenceJpa.java
+++
b/extensions/security/sessionlog/persistence-jpa/src/main/java/org/apache/isis/sessionlog/jpa/IsisModuleExtSessionLogPersistenceJpa.java
@@ -33,6 +33,7 @@ import
org.apache.isis.testing.fixtures.applib.IsisModuleTestingFixturesApplib;
import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
import org.apache.isis.testing.fixtures.applib.modules.ModuleWithFixtures;
import
org.apache.isis.testing.fixtures.applib.teardown.jdo.TeardownFixtureJdoAbstract;
+import
org.apache.isis.testing.fixtures.applib.teardown.jpa.TeardownFixtureJpaAbstract;
@Configuration
@@ -56,7 +57,7 @@ public class IsisModuleExtSessionLogPersistenceJpa implements
ModuleWithFixtures
@Override
public FixtureScript getTeardownFixture() {
- return new TeardownFixtureJdoAbstract() {
+ return new TeardownFixtureJpaAbstract() {
@Override
protected void execute(final ExecutionContext executionContext) {
deleteFrom(SessionLogEntry.class);
diff --git
a/extensions/security/sessionlog/persistence-jpa/src/main/java/org/apache/isis/sessionlog/jpa/dom/SessionLogEntry.java
b/extensions/security/sessionlog/persistence-jpa/src/main/java/org/apache/isis/sessionlog/jpa/dom/SessionLogEntry.java
index 8475cd509a..e83f639224 100644
---
a/extensions/security/sessionlog/persistence-jpa/src/main/java/org/apache/isis/sessionlog/jpa/dom/SessionLogEntry.java
+++
b/extensions/security/sessionlog/persistence-jpa/src/main/java/org/apache/isis/sessionlog/jpa/dom/SessionLogEntry.java
@@ -156,7 +156,7 @@ public class SessionLogEntry extends
org.apache.isis.sessionlog.applib.dom.Sessi
}
public SessionLogEntry() {
- super(null, null, null, null, null);
+ this(null, null, null, null, null);
}
diff --git
a/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/teardown/jpa/TeardownFixtureJpaAbstract.java
b/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/teardown/jpa/TeardownFixtureJpaAbstract.java
new file mode 100644
index 0000000000..755284ceaa
--- /dev/null
+++
b/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/teardown/jpa/TeardownFixtureJpaAbstract.java
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.isis.testing.fixtures.applib.teardown.jpa;
+
+import java.util.Optional;
+
+import javax.inject.Inject;
+import javax.jdo.PersistenceManagerFactory;
+import javax.jdo.annotations.DiscriminatorStrategy;
+import javax.jdo.annotations.InheritanceStrategy;
+import javax.jdo.metadata.DiscriminatorMetadata;
+import javax.jdo.metadata.InheritanceMetadata;
+import javax.jdo.metadata.TypeMetadata;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceUnitUtil;
+import javax.persistence.metamodel.EntityType;
+
+import org.springframework.data.jpa.repository.JpaContext;
+
+import org.apache.isis.applib.annotation.Programmatic;
+import org.apache.isis.commons.internal.base._Lazy;
+import org.apache.isis.commons.internal.base._Strings;
+import org.apache.isis.commons.internal.exceptions._Exceptions;
+import org.apache.isis.persistence.jdo.applib.services.JdoSupportService;
+import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
+
+/**
+ * @since 2.x {@index}
+ */
+@Programmatic
+public abstract class TeardownFixtureJpaAbstract extends FixtureScript {
+
+ protected void deleteFrom(Class<?> cls) {
+
+ preDeleteFrom(cls);
+ repositoryService.removeAll(cls);
+ postDeleteFrom(cls);
+ }
+
+ protected void preDeleteFrom(final Class<?> cls) {}
+
+ protected void postDeleteFrom(final Class<?> cls) {}
+
+
+}