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 8cd12ffe5b ISIS-3091: adds subscriber impl; more compile fixes
8cd12ffe5b is described below
commit 8cd12ffe5b54826743f04059565b860a71d1736b
Author: Dan Haywood <[email protected]>
AuthorDate: Fri Jul 22 15:40:47 2022 +0100
ISIS-3091: adds subscriber impl; more compile fixes
---
.../publishing/spi/EntityPropertyChange.java | 37 ++++++++--------
.../objectlifecycle/PropertyChangeRecord.java | 15 ++++---
.../audittrail/applib/dom/AuditTrailEntry.java | 30 ++++++-------
.../applib/dom/AuditTrailEntryRepository.java | 5 ++-
...ntityPropertyChangeSubscriberForAuditTrail.java | 9 +++-
.../applib/AuditTrailIntegTestAbstract.java | 29 +++----------
.../jdo/IsisModuleExtAuditTrailPersistenceJdo.java | 6 +--
...uditTrailEntryJdo.java => AuditTrailEntry.java} | 49 +++++++++-------------
.../isis/audittrail/jpa/dom/AuditTrailEntry.java | 16 -------
.../isis/audittrail/jpa/AuditTrail_IntegTest.java | 2 +-
.../jdo/permission/dom/ApplicationPermission.java | 10 ++---
.../secman/jdo/role/dom/ApplicationRole.java | 6 ++-
.../secman/jdo/tenancy/dom/ApplicationTenancy.java | 10 ++---
.../secman/jdo/user/dom/ApplicationUser.java | 10 ++---
.../_EntityPropertyChangeFactory.java | 6 +--
.../applib/entity/jdo/dom/JdoEntity.java | 3 +-
16 files changed, 96 insertions(+), 147 deletions(-)
diff --git
a/api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/EntityPropertyChange.java
b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/EntityPropertyChange.java
index 2ad033cab4..9bb9769dc6 100644
---
a/api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/EntityPropertyChange.java
+++
b/api/applib/src/main/java/org/apache/isis/applib/services/publishing/spi/EntityPropertyChange.java
@@ -26,34 +26,33 @@ import org.apache.isis.applib.services.bookmark.Bookmark;
import lombok.Value;
/**
- * Immutable data record for {@link EntityPropertyChangeSubscriber}s.
- *
+ * Immutable data record for {@link EntityPropertyChangeSubscriber}s.
+ *
* @since 2.0 {@index}
*/
@Value(staticConstructor = "of")
public class EntityPropertyChange {
- private final UUID interactionId;
+ private final UUID interactionId;
private final int sequence;
- private final String targetClassName;
- private final Bookmark target;
- private final String memberIdentifier;
- private final String propertyName;
- private final String preValue;
- private final String postValue;
- private final String user;
- private final Timestamp timestamp;
-
+ private final Bookmark target;
+ private final String logicalMemberIdentifier;
+ private final String propertyId;
+ private final String preValue;
+ private final String postValue;
+ private final String username;
+ private final Timestamp timestamp;
+
@Override
public String toString() {
return String.format("%s,%d: %s by %s, %s: %s -> %s",
- getInteractionId(),
- getSequence(),
- getTarget().toString(),
- getUser(),
- getPropertyName(),
- getPreValue(),
+ getInteractionId(),
+ getSequence(),
+ getTarget().toString(),
+ getUsername(),
+ getPropertyId(),
+ getPreValue(),
getPostValue());
}
-
+
}
diff --git
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/objectlifecycle/PropertyChangeRecord.java
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/objectlifecycle/PropertyChangeRecord.java
index 1eee04c333..ea7c5b2fb8 100644
---
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/objectlifecycle/PropertyChangeRecord.java
+++
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/objectlifecycle/PropertyChangeRecord.java
@@ -99,26 +99,25 @@ public final class PropertyChangeRecord {
public EntityPropertyChange toEntityPropertyChange(
final Timestamp timestamp,
- final String user,
+ final String username,
final TransactionId txId) {
- val spec = getEntity().getSpecification();
val property = this.getProperty();
final Bookmark target = ManagedObjects.bookmarkElseFail(getEntity());
final String propertyId = property.getId();
- final String memberId =
property.getFeatureIdentifier().getFullIdentityString();
+ final String logicalMemberId =
property.getFeatureIdentifier().getFullIdentityString();
final String preValueStr = getPreAndPostValue().getPreString();
final String postValueStr = getPreAndPostValue().getPostString();
- final String targetClass = IdentifierUtil.targetClassNameFor(spec);
- final UUID transactionId = txId.getInteractionId();
+ final UUID interactionId = txId.getInteractionId();
final int sequence = txId.getSequence();
-
return EntityPropertyChange.of(
- transactionId, sequence, targetClass, target,
- memberId, propertyId, preValueStr, postValueStr, user,
timestamp);
+ interactionId, sequence,
+ target, logicalMemberId, propertyId,
+ preValueStr, postValueStr,
+ username, timestamp);
}
// -- HELPER
diff --git
a/extensions/security/audittrail/applib/src/main/java/org/apache/isis/audittrail/applib/dom/AuditTrailEntry.java
b/extensions/security/audittrail/applib/src/main/java/org/apache/isis/audittrail/applib/dom/AuditTrailEntry.java
index 35a6357da4..5c2db0da51 100644
---
a/extensions/security/audittrail/applib/src/main/java/org/apache/isis/audittrail/applib/dom/AuditTrailEntry.java
+++
b/extensions/security/audittrail/applib/src/main/java/org/apache/isis/audittrail/applib/dom/AuditTrailEntry.java
@@ -31,6 +31,7 @@ import javax.inject.Named;
import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.applib.annotation.DomainObjectLayout;
import org.apache.isis.applib.annotation.Editing;
+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;
@@ -38,6 +39,7 @@ import
org.apache.isis.applib.mixins.system.DomainChangeRecord;
import org.apache.isis.applib.mixins.system.HasInteractionId;
import org.apache.isis.applib.mixins.system.HasInteractionIdAndSequence;
import org.apache.isis.applib.services.bookmark.Bookmark;
+import org.apache.isis.applib.services.publishing.spi.EntityPropertyChange;
import org.apache.isis.applib.util.ObjectContracts;
import org.apache.isis.applib.util.TitleBuffer;
import org.apache.isis.audittrail.applib.IsisModuleExtAuditTrailApplib;
@@ -90,23 +92,17 @@ public abstract class AuditTrailEntry implements
DomainChangeRecord, Comparable<
public static abstract class ActionDomainEvent extends
IsisModuleExtAuditTrailApplib.ActionDomainEvent<AuditTrailEntry> { }
- protected 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) {
- setTimestamp(timestamp);
- setUsername(username);
- setTarget(target);
- setLogicalMemberIdentifier(logicalMemberIdentifier);
- setPropertyId(propertyId);
- setPreValue(_Strings.trimmed(preValue, PreValue.MAX_LENGTH));
- setPostValue(_Strings.trimmed(postValue, PostValue.MAX_LENGTH));
- setInteractionId(interactionId);
+ @Programmatic
+ public void init(EntityPropertyChange change) {
+ setTimestamp(change.getTimestamp());
+ setUsername(change.getUsername());
+ setTarget(change.getTarget());
+ setLogicalMemberIdentifier(change.getLogicalMemberIdentifier());
+ setSequence(change.getSequence());
+ setPropertyId(change.getPropertyId());
+ setPreValue(_Strings.trimmed(change.getPreValue(),
PreValue.MAX_LENGTH));
+ setPostValue(_Strings.trimmed(change.getPostValue(),
PostValue.MAX_LENGTH));
+ setInteractionId(change.getInteractionId());
}
diff --git
a/extensions/security/audittrail/applib/src/main/java/org/apache/isis/audittrail/applib/dom/AuditTrailEntryRepository.java
b/extensions/security/audittrail/applib/src/main/java/org/apache/isis/audittrail/applib/dom/AuditTrailEntryRepository.java
index 45c25a05d6..20cd9d5f9a 100644
---
a/extensions/security/audittrail/applib/src/main/java/org/apache/isis/audittrail/applib/dom/AuditTrailEntryRepository.java
+++
b/extensions/security/audittrail/applib/src/main/java/org/apache/isis/audittrail/applib/dom/AuditTrailEntryRepository.java
@@ -31,6 +31,7 @@ import javax.inject.Inject;
import org.apache.isis.applib.query.Query;
import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.applib.services.factory.FactoryService;
+import org.apache.isis.applib.services.publishing.spi.EntityPropertyChange;
import org.apache.isis.applib.services.repository.RepositoryService;
import lombok.NonNull;
@@ -51,9 +52,9 @@ public abstract class AuditTrailEntryRepository<E extends
AuditTrailEntry> {
}
- public AuditTrailEntry create() {
+ public AuditTrailEntry createFor(final EntityPropertyChange change) {
E entry = factoryService.detachedEntity(auditTrailEntryClass);
- // TODO: set the state
+ entry.init(change);
return repositoryService.persistAndFlush(entry);
}
diff --git
a/extensions/security/audittrail/applib/src/main/java/org/apache/isis/audittrail/applib/spiimpl/EntityPropertyChangeSubscriberForAuditTrail.java
b/extensions/security/audittrail/applib/src/main/java/org/apache/isis/audittrail/applib/spiimpl/EntityPropertyChangeSubscriberForAuditTrail.java
index 48790e44db..2e53bcee78 100644
---
a/extensions/security/audittrail/applib/src/main/java/org/apache/isis/audittrail/applib/spiimpl/EntityPropertyChangeSubscriberForAuditTrail.java
+++
b/extensions/security/audittrail/applib/src/main/java/org/apache/isis/audittrail/applib/spiimpl/EntityPropertyChangeSubscriberForAuditTrail.java
@@ -30,8 +30,9 @@ import org.springframework.stereotype.Service;
import org.apache.isis.applib.annotation.PriorityPrecedence;
import org.apache.isis.applib.services.publishing.spi.EntityPropertyChange;
import
org.apache.isis.applib.services.publishing.spi.EntityPropertyChangeSubscriber;
-import org.apache.isis.applib.services.session.SessionSubscriber;
import org.apache.isis.audittrail.applib.IsisModuleExtAuditTrailApplib;
+import org.apache.isis.audittrail.applib.dom.AuditTrailEntry;
+import org.apache.isis.audittrail.applib.dom.AuditTrailEntryRepository;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
@@ -51,8 +52,14 @@ public class EntityPropertyChangeSubscriberForAuditTrail
implements EntityProper
static final String LOGICAL_TYPE_NAME =
IsisModuleExtAuditTrailApplib.NAMESPACE +
".EntityPropertyChangeSubscriberForAuditTrail";
+ final AuditTrailEntryRepository<? extends AuditTrailEntry>
auditTrailEntryRepository;
+
@Override
public void onChanging(EntityPropertyChange entityPropertyChange) {
+ auditTrailEntryRepository.createFor(entityPropertyChange);
+
}
+
+
}
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 98c7a42c07..b0f9ebddaf 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
@@ -16,28 +16,22 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.sessionlog.applib;
+package org.apache.isis.audittrail.applib;
-import java.sql.Timestamp;
-import java.time.Duration;
import java.time.Instant;
import java.util.Date;
-import java.util.List;
-import java.util.Optional;
import java.util.UUID;
import java.util.concurrent.atomic.AtomicInteger;
import javax.inject.Inject;
-import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Qualifier;
import org.apache.isis.applib.annotation.Value;
-import org.apache.isis.applib.services.session.SessionSubscriber;
-import org.apache.isis.sessionlog.applib.dom.SessionLogEntry;
-import org.apache.isis.sessionlog.applib.dom.SessionLogEntryRepository;
+import
org.apache.isis.applib.services.publishing.spi.EntityPropertyChangeSubscriber;
+import org.apache.isis.audittrail.applib.dom.AuditTrailEntry;
+import org.apache.isis.audittrail.applib.dom.AuditTrailEntryRepository;
import
org.apache.isis.testing.integtestsupport.applib.IsisIntegrationTestAbstract;
import lombok.Getter;
@@ -45,23 +39,12 @@ import lombok.RequiredArgsConstructor;
public abstract class AuditTrailIntegTestAbstract extends
IsisIntegrationTestAbstract {
-
- @Value
- @RequiredArgsConstructor
- static class Session {
- private static AtomicInteger counter = new AtomicInteger();
- @Getter final String username;
- final Instant instant;
- public Date getDate() { return Date.from(instant); }
- UUID sessionGuid = UUID.randomUUID();
- final String httpSessionId = "http-" + counter.incrementAndGet();
- }
@BeforeEach
void setUp() {
}
- @Inject @Qualifier("default") SessionSubscriber sessionSubscriber;
- @Inject SessionLogEntryRepository<? extends SessionLogEntry>
sessionLogEntryRepository;
+ @Inject @Qualifier("audittrail") EntityPropertyChangeSubscriber
entityPropertyChangeSubscriber;
+ @Inject AuditTrailEntryRepository<? extends AuditTrailEntry>
auditTrailEntryRepository;
}
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 e1d05f9e5c..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
@@ -24,7 +24,7 @@ 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.AuditTrailEntryJdo;
+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.testing.fixtures.applib.IsisModuleTestingFixturesApplib;
@@ -44,7 +44,7 @@ import
org.apache.isis.testing.fixtures.applib.teardown.jdo.TeardownFixtureJdoAb
AuditTrailEntryRepository.class,
// entities, eager meta-model introspection
- AuditTrailEntryJdo.class,
+ AuditTrailEntry.class,
})
public class IsisModuleExtAuditTrailPersistenceJdo implements
ModuleWithFixtures {
@@ -53,7 +53,7 @@ public class IsisModuleExtAuditTrailPersistenceJdo implements
ModuleWithFixtures
return new TeardownFixtureJdoAbstract() {
@Override
protected void execute(final ExecutionContext executionContext) {
- deleteFrom(AuditTrailEntryJdo.class);
+ deleteFrom(AuditTrailEntry.class);
}
};
}
diff --git
a/extensions/security/audittrail/persistence-jdo/src/main/java/org/apache/isis/audittrail/jdo/dom/AuditTrailEntryJdo.java
b/extensions/security/audittrail/persistence-jdo/src/main/java/org/apache/isis/audittrail/jdo/dom/AuditTrailEntry.java
similarity index 82%
rename from
extensions/security/audittrail/persistence-jdo/src/main/java/org/apache/isis/audittrail/jdo/dom/AuditTrailEntryJdo.java
rename to
extensions/security/audittrail/persistence-jdo/src/main/java/org/apache/isis/audittrail/jdo/dom/AuditTrailEntry.java
index b7152b0304..b3a95053f2 100644
---
a/extensions/security/audittrail/persistence-jdo/src/main/java/org/apache/isis/audittrail/jdo/dom/AuditTrailEntryJdo.java
+++
b/extensions/security/audittrail/persistence-jdo/src/main/java/org/apache/isis/audittrail/jdo/dom/AuditTrailEntry.java
@@ -34,6 +34,7 @@ import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.Queries;
import javax.jdo.annotations.Query;
import javax.jdo.annotations.Version;
+import javax.jdo.annotations.VersionStrategy;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
@@ -47,8 +48,8 @@ import lombok.Getter;
import lombok.Setter;
@PersistenceCapable(
identityType = IdentityType.DATASTORE,
- schema = AuditTrailEntryJdo.SCHEMA,
- table = AuditTrailEntryJdo.TABLE)
+ schema = AuditTrailEntry.SCHEMA,
+ table = AuditTrailEntry.TABLE)
@Indices({
@Index(name = "target_propertyId_timestamp_IDX", members = { "target",
"propertyId", "timestamp" }, unique = "false"),
@Index(name = "target_timestamp_IDX", members = { "target",
"timestamp" }, unique = "false"),
@@ -59,26 +60,26 @@ import lombok.Setter;
@Query(
name = Nq.FIND_BY_INTERACTION_ID,
value = "SELECT "
- + " FROM " + AuditTrailEntryJdo.FQCN + " "
+ + " FROM " + AuditTrailEntry.FQCN + " "
+ " WHERE interactionId == :interactionId"),
@Query(
name = Nq.FIND_FIRST_BY_TARGET,
value = "SELECT "
- + " FROM " + AuditTrailEntryJdo.FQCN + " "
+ + " FROM " + AuditTrailEntry.FQCN + " "
+ " WHERE target == :target "
+ " ORDER BY timestamp ASC "
+ " RANGE 0,2"),
@Query(
name = Nq.FIND_RECENT_BY_TARGET,
value = "SELECT "
- + " FROM " + AuditTrailEntryJdo.FQCN + " "
+ + " FROM " + AuditTrailEntry.FQCN + " "
+ " WHERE targetStr == :targetStr "
+ " ORDER BY timestamp DESC "
+ " RANGE 0,100"),
@Query(
name = Nq.FIND_BY_TARGET_AND_TIMESTAMP_BETWEEN,
value = "SELECT "
- + " FROM " + AuditTrailEntryJdo.FQCN + " "
+ + " FROM " + AuditTrailEntry.FQCN + " "
+ " WHERE targetStr == :targetStr "
+ " && timestamp >= :from "
+ " && timestamp <= :to "
@@ -86,51 +87,51 @@ import lombok.Setter;
@Query(
name = Nq.FIND_BY_TARGET_AND_TIMESTAMP_AFTER,
value = "SELECT "
- + " FROM " + AuditTrailEntryJdo.FQCN + " "
+ + " FROM " + AuditTrailEntry.FQCN + " "
+ " WHERE target == :target "
+ " && timestamp >= :from "
+ " ORDER BY this.timestamp DESC"),
@Query(
name = Nq.FIND_BY_TARGET_AND_TIMESTAMP_BEFORE,
value = "SELECT "
- + " FROM " + AuditTrailEntryJdo.FQCN + " "
+ + " FROM " + AuditTrailEntry.FQCN + " "
+ " WHERE target == :target "
+ " && timestamp <= :to "
+ " ORDER BY this.timestamp DESC"),
@Query(
name = Nq.FIND_BY_TARGET,
value = "SELECT "
- + " FROM " + AuditTrailEntryJdo.FQCN + " "
+ + " FROM " + AuditTrailEntry.FQCN + " "
+ " WHERE target == :target "
+ " ORDER BY timestamp DESC"),
@Query(
name = Nq.FIND_BY_TIMESTAMP_BETWEEN,
value = "SELECT "
- + " FROM " + AuditTrailEntryJdo.FQCN + " "
+ + " FROM " + AuditTrailEntry.FQCN + " "
+ " WHERE timestamp >= :from "
+ " && timestamp <= :to "
+ " ORDER BY this.timestamp DESC"),
@Query(
name = Nq.FIND_BY_TIMESTAMP_AFTER,
value = "SELECT "
- + " FROM " + AuditTrailEntryJdo.FQCN + " "
+ + " FROM " + AuditTrailEntry.FQCN + " "
+ " WHERE timestamp >= :from "
+ " ORDER BY this.timestamp DESC"),
@Query(
name = Nq.FIND_BY_TIMESTAMP_BEFORE,
value = "SELECT "
- + " FROM " + AuditTrailEntryJdo.FQCN + " "
+ + " FROM " + AuditTrailEntry.FQCN + " "
+ " WHERE timestamp <= :to "
+ " ORDER BY this.timestamp DESC"),
@Query(
name = Nq.FIND,
value = "SELECT "
- + " FROM " + AuditTrailEntryJdo.FQCN + " "
+ + " FROM " + AuditTrailEntry.FQCN + " "
+ " ORDER BY this.timestamp DESC"),
@Query(
name = Nq.FIND_RECENT_BY_TARGET_AND_PROPERTY_ID,
value = "SELECT "
- + " FROM " + AuditTrailEntryJdo.FQCN + " "
+ + " FROM " + AuditTrailEntry.FQCN + " "
+ " WHERE target == :target "
+ " && propertyId == :propertyId "
+ " ORDER BY timestamp DESC "
@@ -138,27 +139,15 @@ import lombok.Setter;
})
@XmlJavaTypeAdapter(PersistentEntityAdapter.class)
@DatastoreIdentity(strategy = IdGeneratorStrategy.IDENTITY, column = "id")
-@Version(column = "version")
-@Named(AuditTrailEntryJdo.LOGICAL_TYPE_NAME)
+@Version(strategy = VersionStrategy.VERSION_NUMBER, column = "version")
+@Named(AuditTrailEntry.LOGICAL_TYPE_NAME)
@DomainObject(
editing = Editing.DISABLED
)
-public class AuditTrailEntryJdo
+public class AuditTrailEntry
extends org.apache.isis.audittrail.applib.dom.AuditTrailEntry {
- static final String FQCN =
"org.apache.isis.audittrail.jdo.dom.AuditTrailEntryJdo";
-
- public AuditTrailEntryJdo(
- 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);
- }
+ static final String FQCN =
"org.apache.isis.audittrail.jdo.dom.AuditTrailEntry";
@Column(allowsNull = Username.ALLOWS_NULL, length = Username.MAX_LENGTH)
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
index 0a42919754..bdc2ec9efb 100644
---
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
@@ -149,22 +149,6 @@ 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;
diff --git
a/extensions/security/audittrail/persistence-jpa/src/test/java/org/apache/isis/audittrail/jpa/AuditTrail_IntegTest.java
b/extensions/security/audittrail/persistence-jpa/src/test/java/org/apache/isis/audittrail/jpa/AuditTrail_IntegTest.java
index 368b4bb0e0..089e6b04f8 100644
---
a/extensions/security/audittrail/persistence-jpa/src/test/java/org/apache/isis/audittrail/jpa/AuditTrail_IntegTest.java
+++
b/extensions/security/audittrail/persistence-jpa/src/test/java/org/apache/isis/audittrail/jpa/AuditTrail_IntegTest.java
@@ -26,10 +26,10 @@ import
org.springframework.context.annotation.PropertySource;
import org.springframework.context.annotation.PropertySources;
import org.springframework.test.context.ActiveProfiles;
+import org.apache.isis.audittrail.applib.AuditTrailIntegTestAbstract;
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.AuditTrailIntegTestAbstract;
@SpringBootTest(
classes = AuditTrail_IntegTest.AppManifest.class
diff --git
a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/permission/dom/ApplicationPermission.java
b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/permission/dom/ApplicationPermission.java
index 923ae9df05..559d46f544 100644
---
a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/permission/dom/ApplicationPermission.java
+++
b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/permission/dom/ApplicationPermission.java
@@ -95,13 +95,9 @@ import lombok.Setter;
+ " && rule == :rule "
+ " && featureSort == :featureSort "),
})
-@Inheritance(
- strategy = InheritanceStrategy.NEW_TABLE)
-@DatastoreIdentity(
- strategy = IdGeneratorStrategy.NATIVE, column = "id")
-@Version(
- strategy = VersionStrategy.VERSION_NUMBER,
- column = "version")
+@Inheritance(strategy = InheritanceStrategy.NEW_TABLE)
+@DatastoreIdentity(strategy = IdGeneratorStrategy.NATIVE, column = "id")
+@Version(strategy = VersionStrategy.VERSION_NUMBER, column = "version")
@XmlJavaTypeAdapter(PersistentEntityAdapter.class)
@Named(ApplicationPermission.LOGICAL_TYPE_NAME)
@DomainObject()
diff --git
a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/role/dom/ApplicationRole.java
b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/role/dom/ApplicationRole.java
index c492ec8dcd..fee80e16fc 100644
---
a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/role/dom/ApplicationRole.java
+++
b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/role/dom/ApplicationRole.java
@@ -34,6 +34,8 @@ 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.jdo.annotations.VersionStrategy;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import org.apache.isis.applib.annotation.BookmarkPolicy;
@@ -70,8 +72,8 @@ import lombok.Setter;
})
@Inheritance(
strategy = InheritanceStrategy.NEW_TABLE)
-@DatastoreIdentity(
- strategy = IdGeneratorStrategy.NATIVE, column = "id")
+@DatastoreIdentity(strategy = IdGeneratorStrategy.NATIVE, column = "id")
+@Version(strategy = VersionStrategy.VERSION_NUMBER, column = "version")
@XmlJavaTypeAdapter(PersistentEntityAdapter.class)
@Named(ApplicationRole.LOGICAL_TYPE_NAME)
@DomainObject(
diff --git
a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/tenancy/dom/ApplicationTenancy.java
b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/tenancy/dom/ApplicationTenancy.java
index f07a8c77b7..d28d33eb81 100644
---
a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/tenancy/dom/ApplicationTenancy.java
+++
b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/tenancy/dom/ApplicationTenancy.java
@@ -76,13 +76,9 @@ import lombok.Setter;
+ " WHERE name.matches(:regex) "
+ " || path.matches(:regex) ")
})
-@Inheritance(
- strategy = InheritanceStrategy.NEW_TABLE)
-@DatastoreIdentity(
- strategy = IdGeneratorStrategy.NATIVE, column = "id")
-@Version(
- strategy = VersionStrategy.VERSION_NUMBER,
- column = "version")
+@Inheritance(strategy = InheritanceStrategy.NEW_TABLE)
+@DatastoreIdentity(strategy = IdGeneratorStrategy.NATIVE, column = "id")
+@Version(strategy = VersionStrategy.VERSION_NUMBER, column = "version")
@XmlJavaTypeAdapter(PersistentEntityAdapter.class)
@Named(ApplicationTenancy.LOGICAL_TYPE_NAME)
@DomainObject(
diff --git
a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/user/dom/ApplicationUser.java
b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/user/dom/ApplicationUser.java
index 68a1d42b7a..539bbe05fe 100644
---
a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/user/dom/ApplicationUser.java
+++
b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/user/dom/ApplicationUser.java
@@ -84,13 +84,9 @@ import lombok.Setter;
+ " || knownAs.matches(:regex)"
+ " || emailAddress.matches(:regex)")
})
-@Inheritance(
- strategy = InheritanceStrategy.NEW_TABLE)
-@DatastoreIdentity(
- strategy = IdGeneratorStrategy.NATIVE, column = "id")
-@Version(
- strategy = VersionStrategy.VERSION_NUMBER,
- column = "version")
+@Inheritance(strategy = InheritanceStrategy.NEW_TABLE)
+@DatastoreIdentity(strategy = IdGeneratorStrategy.NATIVE, column = "id")
+@Version(strategy = VersionStrategy.VERSION_NUMBER, column = "version")
@XmlJavaTypeAdapter(PersistentEntityAdapter.class)
@Named(ApplicationUser.LOGICAL_TYPE_NAME)
@DomainObject(
diff --git
a/persistence/jdo/integration/src/main/java/org/apache/isis/persistence/jdo/integration/changetracking/_EntityPropertyChangeFactory.java
b/persistence/jdo/integration/src/main/java/org/apache/isis/persistence/jdo/integration/changetracking/_EntityPropertyChangeFactory.java
index 4d472768f3..57c42c69a4 100644
---
a/persistence/jdo/integration/src/main/java/org/apache/isis/persistence/jdo/integration/changetracking/_EntityPropertyChangeFactory.java
+++
b/persistence/jdo/integration/src/main/java/org/apache/isis/persistence/jdo/integration/changetracking/_EntityPropertyChangeFactory.java
@@ -32,7 +32,7 @@ final class _EntityPropertyChangeFactory {
public static EntityPropertyChange createEntityPropertyChange(
final java.sql.Timestamp timestamp,
- final String user,
+ final String username,
final TransactionId txId,
final PropertyChangeRecord propertyChangeRecord) {
@@ -49,7 +49,7 @@ final class _EntityPropertyChangeFactory {
final int sequence = txId.getSequence();
return EntityPropertyChange.of(
- transactionId, sequence, targetClass, target,
- memberId, propertyId, preValue, postValue, user, timestamp);
+ transactionId, sequence, target,
+ memberId, propertyId, preValue, postValue, username,
timestamp);
}
}
diff --git
a/testing/archtestsupport/applib/src/test/java/org/apache/isis/testing/archtestsupport/applib/entity/jdo/dom/JdoEntity.java
b/testing/archtestsupport/applib/src/test/java/org/apache/isis/testing/archtestsupport/applib/entity/jdo/dom/JdoEntity.java
index 8268881898..c5dc791780 100644
---
a/testing/archtestsupport/applib/src/test/java/org/apache/isis/testing/archtestsupport/applib/entity/jdo/dom/JdoEntity.java
+++
b/testing/archtestsupport/applib/src/test/java/org/apache/isis/testing/archtestsupport/applib/entity/jdo/dom/JdoEntity.java
@@ -29,6 +29,7 @@ import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Unique;
import javax.jdo.annotations.Uniques;
import javax.jdo.annotations.Version;
+import javax.jdo.annotations.VersionStrategy;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import org.apache.isis.applib.annotation.DomainObject;
@@ -37,7 +38,7 @@ import org.apache.isis.applib.jaxb.PersistentEntityAdapter;
@PersistenceCapable(schema = "jdo", identityType = IdentityType.DATASTORE)
@DatastoreIdentity(strategy = IdGeneratorStrategy.NATIVE)
-@Version
+@Version(strategy = VersionStrategy.VERSION_NUMBER, column = "version")
@Uniques(@Unique(name = "name", members = {"name"}))
@DomainObject(nature = Nature.ENTITY)
@XmlJavaTypeAdapter(PersistentEntityAdapter.class)