This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/master by this push:
new 1a430e1c6e ISIS-3230: makes audit, command and exec log menus more
consistent.
new 139f5757d5 Merge branch 'ISIS-3230'
1a430e1c6e is described below
commit 1a430e1c6e5a95313af0657954a9ba95331141ae
Author: Dan Haywood <[email protected]>
AuthorDate: Fri Sep 30 10:55:06 2022 +0100
ISIS-3230: makes audit, command and exec log menus more consistent.
also fixes ISIS-3229, namespace for audit trail (consistent with seed data)
---
.../commandlog/applib/app/CommandLogMenu.java | 86 +++++++++-------------
.../commandlog/applib/dom/CommandLogEntry.java | 1 +
.../applib/dom/CommandLogEntryRepository.java | 15 +++-
.../commandlog/jdo/dom/CommandLogEntry.java | 41 ++++++-----
.../commandlog/jpa/dom/CommandLogEntry.java | 5 ++
.../executionlog/applib/app/ExecutionLogMenu.java | 84 ++++++++++++++-------
.../executionlog/applib/dom/ExecutionLogEntry.java | 1 +
.../applib/dom/ExecutionLogEntryRepository.java | 47 +++++++++++-
.../executionlog/jdo/dom/ExecutionLogEntry.java | 8 +-
.../executionlog/jpa/dom/ExecutionLogEntry.java | 7 +-
.../applib/IsisModuleExtAuditTrailApplib.java | 2 +-
.../audittrail/applib/app/AuditTrailMenu.java | 77 +++++++++++++------
.../audittrail/applib/dom/AuditTrailEntry.java | 1 +
.../applib/dom/AuditTrailEntryRepository.java | 10 +++
.../audittrail/jdo/dom/AuditTrailEntry.java | 18 +++--
.../audittrail/jpa/dom/AuditTrailEntry.java | 14 ++--
16 files changed, 280 insertions(+), 137 deletions(-)
diff --git
a/extensions/core/commandlog/applib/src/main/java/org/apache/isis/extensions/commandlog/applib/app/CommandLogMenu.java
b/extensions/core/commandlog/applib/src/main/java/org/apache/isis/extensions/commandlog/applib/app/CommandLogMenu.java
index 4e1124c92b..6f01829450 100644
---
a/extensions/core/commandlog/applib/src/main/java/org/apache/isis/extensions/commandlog/applib/app/CommandLogMenu.java
+++
b/extensions/core/commandlog/applib/src/main/java/org/apache/isis/extensions/commandlog/applib/app/CommandLogMenu.java
@@ -18,43 +18,30 @@
*/
package org.apache.isis.extensions.commandlog.applib.app;
+import lombok.RequiredArgsConstructor;
+
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.List;
-import java.util.UUID;
import javax.inject.Inject;
import javax.inject.Named;
-import org.springframework.lang.Nullable;
-
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.BookmarkPolicy;
-import org.apache.isis.applib.annotation.DomainService;
-import org.apache.isis.applib.annotation.DomainServiceLayout;
-import org.apache.isis.applib.annotation.MemberSupport;
-import org.apache.isis.applib.annotation.NatureOfService;
-import org.apache.isis.applib.annotation.PriorityPrecedence;
-import org.apache.isis.applib.annotation.RestrictTo;
-import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.*;
import org.apache.isis.applib.services.clock.ClockService;
import
org.apache.isis.extensions.commandlog.applib.IsisModuleExtCommandLogApplib;
import org.apache.isis.extensions.commandlog.applib.dom.CommandLogEntry;
import
org.apache.isis.extensions.commandlog.applib.dom.CommandLogEntryRepository;
-
-import lombok.RequiredArgsConstructor;
+import org.springframework.lang.Nullable;
/**
* @since 2.0 {@index}
*/
@Named(CommandLogMenu.LOGICAL_TYPE_NAME)
-@DomainService(
- nature = NatureOfService.VIEW
-)
+@DomainService(nature = NatureOfService.VIEW)
@DomainServiceLayout(
- named = "Activity",
- menuBar = DomainServiceLayout.MenuBar.SECONDARY
+ menuBar = DomainServiceLayout.MenuBar.SECONDARY,
+ named = "Activity"
)
@javax.annotation.Priority(PriorityPrecedence.EARLY)
@RequiredArgsConstructor(onConstructor_ = { @Inject })
@@ -63,8 +50,8 @@ public class CommandLogMenu {
public static final String LOGICAL_TYPE_NAME =
IsisModuleExtCommandLogApplib.NAMESPACE + ".CommandLogMenu";
- public static abstract class ActionDomainEvent
- extends
IsisModuleExtCommandLogApplib.ActionDomainEvent<CommandLogMenu> { }
+ public static abstract class ActionDomainEvent<T>
+ extends IsisModuleExtCommandLogApplib.ActionDomainEvent<T> { }
final CommandLogEntryRepository<? extends CommandLogEntry>
commandLogEntryRepository;
@@ -78,7 +65,7 @@ public class CommandLogMenu {
)
@ActionLayout(bookmarking = BookmarkPolicy.AS_ROOT, cssClassFa =
"fa-bolt", sequence="10")
public class activeCommands {
- public class DomainEvent extends ActionDomainEvent { }
+ public class DomainEvent extends ActionDomainEvent<activeCommands> { }
@MemberSupport public List<? extends CommandLogEntry> act() {
return commandLogEntryRepository.findCurrent();
@@ -86,16 +73,29 @@ public class CommandLogMenu {
}
+ @Action(
+ domainEvent = findMostRecent.DomainEvent.class,
+ semantics = SemanticsOf.SAFE,
+ typeOf = CommandLogEntry.class
+ )
+ @ActionLayout(cssClassFa = "fa-search", sequence="10")
+ public class findMostRecent {
+ public class DomainEvent extends ActionDomainEvent<findMostRecent> { }
+
+ @MemberSupport public List<? extends CommandLogEntry> act() {
+ return commandLogEntryRepository.findMostRecent();
+ }
+ }
+
@Action(
domainEvent = findCommands.DomainEvent.class,
semantics = SemanticsOf.SAFE,
typeOf = CommandLogEntry.class
)
- @ActionLayout(cssClassFa = "fa-search", sequence="20")
+ @ActionLayout(cssClassFa = "fa-search", sequence="30")
public class findCommands {
-
- public class DomainEvent extends ActionDomainEvent { }
+ public class DomainEvent extends ActionDomainEvent<findCommands> { }
@MemberSupport public List<? extends CommandLogEntry> act(
final @Nullable LocalDate from,
@@ -111,40 +111,26 @@ public class CommandLogMenu {
}
+
@Action(
- domainEvent = findCommandById.DomainEvent.class,
- semantics = SemanticsOf.SAFE
+ domainEvent = findAll.DomainEvent.class,
+ restrictTo = RestrictTo.PROTOTYPING,
+ semantics = SemanticsOf.SAFE,
+ typeOf = CommandLogEntry.class
)
- @ActionLayout(cssClassFa = "fa-crosshairs", sequence="30")
- public class findCommandById {
- public class DomainEvent extends ActionDomainEvent { }
+ @ActionLayout(cssClassFa = "fa-search", sequence="40")
+ public class findAll {
+ public class DomainEvent extends ActionDomainEvent<findAll> { }
- @MemberSupport public CommandLogEntry act(final UUID transactionId) {
- return
commandLogEntryRepository.findByInteractionId(transactionId).orElse(null);
+ @MemberSupport public List<? extends CommandLogEntry> act() {
+ return commandLogEntryRepository.findAll();
}
}
- @Action(
- domainEvent = truncateLog.DomainEvent.class,
- semantics = SemanticsOf.IDEMPOTENT_ARE_YOU_SURE,
- restrictTo = RestrictTo.PROTOTYPING
- )
- @ActionLayout(
- cssClassFa = "fa-trash",
- sequence="40"
- )
- public class truncateLog {
- public class DomainEvent extends ActionDomainEvent { }
-
- @MemberSupport public void act() {
- commandLogEntryRepository.truncateLog();
- }
- }
private LocalDate now() {
return clockService.getClock().nowAsLocalDate(ZoneId.systemDefault());
}
}
-
diff --git
a/extensions/core/commandlog/applib/src/main/java/org/apache/isis/extensions/commandlog/applib/dom/CommandLogEntry.java
b/extensions/core/commandlog/applib/src/main/java/org/apache/isis/extensions/commandlog/applib/dom/CommandLogEntry.java
index e1b3e18946..5b9734bc2a 100644
---
a/extensions/core/commandlog/applib/src/main/java/org/apache/isis/extensions/commandlog/applib/dom/CommandLogEntry.java
+++
b/extensions/core/commandlog/applib/src/main/java/org/apache/isis/extensions/commandlog/applib/dom/CommandLogEntry.java
@@ -128,6 +128,7 @@ implements Comparable<CommandLogEntry>, DomainChangeRecord,
HasCommandDto {
public static final String FIND_BY_TIMESTAMP_AFTER = LOGICAL_TYPE_NAME
+ ".findByTimestampAfter";
public static final String FIND_BY_TIMESTAMP_BEFORE =
LOGICAL_TYPE_NAME + ".findByTimestampBefore";
public static final String FIND = LOGICAL_TYPE_NAME + ".find";
+ public static final String FIND_MOST_RECENT = LOGICAL_TYPE_NAME +
".findMostRecent";
public static final String FIND_RECENT_BY_USERNAME = LOGICAL_TYPE_NAME
+ ".findRecentByUsername";
public static final String FIND_FIRST = LOGICAL_TYPE_NAME +
".findFirst";
public static final String FIND_SINCE = LOGICAL_TYPE_NAME +
".findSince";
diff --git
a/extensions/core/commandlog/applib/src/main/java/org/apache/isis/extensions/commandlog/applib/dom/CommandLogEntryRepository.java
b/extensions/core/commandlog/applib/src/main/java/org/apache/isis/extensions/commandlog/applib/dom/CommandLogEntryRepository.java
index d59e46359b..ad0062c4c4 100644
---
a/extensions/core/commandlog/applib/src/main/java/org/apache/isis/extensions/commandlog/applib/dom/CommandLogEntryRepository.java
+++
b/extensions/core/commandlog/applib/src/main/java/org/apache/isis/extensions/commandlog/applib/dom/CommandLogEntryRepository.java
@@ -141,8 +141,8 @@ public abstract class CommandLogEntryRepository<C extends
CommandLogEntry> {
final @Nullable LocalDate from,
final @Nullable LocalDate to) {
- final Timestamp fromTs = toTimestampStartOfDayWithOffset(from, 0);
- final Timestamp toTs = toTimestampStartOfDayWithOffset(to, 1);
+ val fromTs = toTimestampStartOfDayWithOffset(from, 0);
+ val toTs = toTimestampStartOfDayWithOffset(to, 1);
final Query<C> query;
if(from != null) {
@@ -169,6 +169,17 @@ public abstract class CommandLogEntryRepository<C extends
CommandLogEntry> {
return repositoryService().allMatches(query);
}
+
+ public List<C> findMostRecent() {
+ return findMostRecent(100);
+ }
+
+ public List<C> findMostRecent(final int limit) {
+ return repositoryService().allMatches(
+ Query.named(commandLogEntryClass,
CommandLogEntry.Nq.FIND_MOST_RECENT).withLimit(limit));
+ }
+
+
public List<C> findRecentByUsername(final String username) {
return repositoryService().allMatches(
Query.named(commandLogEntryClass,
CommandLogEntry.Nq.FIND_RECENT_BY_USERNAME)
diff --git
a/extensions/core/commandlog/persistence-jdo/src/main/java/org/apache/isis/extensions/commandlog/jdo/dom/CommandLogEntry.java
b/extensions/core/commandlog/persistence-jdo/src/main/java/org/apache/isis/extensions/commandlog/jdo/dom/CommandLogEntry.java
index 506a09bdee..1fc4167ed6 100644
---
a/extensions/core/commandlog/persistence-jdo/src/main/java/org/apache/isis/extensions/commandlog/jdo/dom/CommandLogEntry.java
+++
b/extensions/core/commandlog/persistence-jdo/src/main/java/org/apache/isis/extensions/commandlog/jdo/dom/CommandLogEntry.java
@@ -63,7 +63,7 @@ import lombok.Setter;
value = "SELECT "
+ " FROM " + CommandLogEntry.FQCN + " "
+ " WHERE target == :target "
- + " ORDER BY this.timestamp DESC "
+ + " ORDER BY timestamp DESC "
+ " RANGE 0,30"),
@Query(
name = Nq.FIND_RECENT_BY_TARGET_OR_RESULT,
@@ -71,7 +71,7 @@ import lombok.Setter;
+ " FROM " + CommandLogEntry.FQCN + " "
+ " WHERE target == :targetOrResult "
+ " || result == :targetOrResult "
- + " ORDER BY this.timestamp DESC "
+ + " ORDER BY timestamp DESC "
+ " RANGE 0,30"),
@Query(
name = Nq.FIND_BY_TARGET_AND_TIMESTAMP_BETWEEN,
@@ -80,21 +80,21 @@ import lombok.Setter;
+ " WHERE target == :target "
+ " && timestamp >= :from "
+ " && timestamp <= :to "
- + " ORDER BY this.timestamp DESC"),
+ + " ORDER BY timestamp DESC"),
@Query(
name = Nq.FIND_BY_TARGET_AND_TIMESTAMP_AFTER,
value = "SELECT "
+ " FROM " + CommandLogEntry.FQCN + " "
+ " WHERE target == :target "
+ " && timestamp >= :from "
- + " ORDER BY this.timestamp DESC"),
+ + " ORDER BY timestamp DESC"),
@Query(
name = Nq.FIND_BY_TARGET_AND_TIMESTAMP_BEFORE,
value = "SELECT "
+ " FROM " + CommandLogEntry.FQCN + " "
+ " WHERE target == :target "
+ " && timestamp <= :to "
- + " ORDER BY this.timestamp DESC"),
+ + " ORDER BY timestamp DESC"),
@Query(
name = Nq.FIND_BY_TARGET,
value = "SELECT "
@@ -107,30 +107,36 @@ import lombok.Setter;
+ " FROM " + CommandLogEntry.FQCN + " "
+ " WHERE timestamp >= :from "
+ " && timestamp <= :to "
- + " ORDER BY this.timestamp DESC"),
+ + " ORDER BY timestamp DESC"),
@Query(
name = Nq.FIND_BY_TIMESTAMP_AFTER,
value = "SELECT "
+ " FROM " + CommandLogEntry.FQCN + " "
+ " WHERE timestamp >= :from "
- + " ORDER BY this.timestamp DESC"),
+ + " ORDER BY timestamp DESC"),
@Query(
name = Nq.FIND_BY_TIMESTAMP_BEFORE,
value = "SELECT "
+ " FROM " + CommandLogEntry.FQCN + " "
+ " WHERE timestamp <= :to "
- + " ORDER BY this.timestamp DESC"),
+ + " ORDER BY timestamp DESC"),
@Query(
name = Nq.FIND,
value = "SELECT "
+ " FROM " + CommandLogEntry.FQCN + " "
- + " ORDER BY this.timestamp DESC"),
+ + " ORDER BY timestamp DESC"),
+ @Query(
+ name = Nq.FIND_MOST_RECENT,
+ value = "SELECT "
+ + " FROM " + CommandLogEntry.FQCN + " "
+ + " ORDER BY timestamp DESC, interactionId DESC, sequence
DESC"
+ + " RANGE 0,100"),
@Query(
name = Nq.FIND_RECENT_BY_USERNAME,
value = "SELECT "
+ " FROM " + CommandLogEntry.FQCN + " "
+ " WHERE username == :username "
- + " ORDER BY this.timestamp DESC "
+ + " ORDER BY timestamp DESC "
+ " RANGE 0,30"),
@Query(
name = Nq.FIND_BY_PARENT,
@@ -142,20 +148,20 @@ import lombok.Setter;
value = "SELECT "
+ " FROM " + CommandLogEntry.FQCN + " "
+ " WHERE completedAt == null "
- + " ORDER BY this.timestamp DESC"),
+ + " ORDER BY timestamp DESC"),
@Query(
name = Nq.FIND_COMPLETED,
value = "SELECT "
+ " FROM " + CommandLogEntry.FQCN + " "
+ " WHERE completedAt != null "
- + " ORDER BY this.timestamp DESC"),
+ + " ORDER BY timestamp DESC"),
@Query(
name = Nq.FIND_FIRST,
value = "SELECT "
+ " FROM " + CommandLogEntry.FQCN + " "
+ " WHERE startedAt != null "
+ " && completedAt != null "
- + " ORDER BY this.timestamp ASC "
+ + " ORDER BY timestamp ASC "
+ " RANGE 0,2"), // this should be RANGE 0,1 but results in
DataNucleus submitting "FETCH NEXT ROW ONLY"
// which SQL Server doesn't understand.
However, as workaround, SQL Server *does* understand FETCH NEXT 2 ROWS ONLY
@Query(
@@ -165,7 +171,7 @@ import lombok.Setter;
+ " WHERE timestamp > :timestamp "
+ " && startedAt != null "
+ " && completedAt != null "
- + "ORDER BY this.timestamp ASC"),
+ + "ORDER BY timestamp ASC"),
// most recent (replayed) command previously replicated from primary to
// secondary. This should always exist except for the very first times
@@ -175,7 +181,7 @@ import lombok.Setter;
value = "SELECT "
+ " FROM " + CommandLogEntry.FQCN + " "
+ " WHERE (replayState == 'OK' || replayState == 'FAILED') "
- + " ORDER BY this.timestamp DESC "
+ + " ORDER BY timestamp DESC "
+ " RANGE 0,2"), // this should be RANGE 0,1 but results in
DataNucleus submitting "FETCH NEXT ROW ONLY"
// which SQL Server doesn't understand.
However, as workaround, SQL Server *does* understand FETCH NEXT 2 ROWS ONLY
@@ -188,16 +194,15 @@ import lombok.Setter;
+ " FROM " + CommandLogEntry.FQCN + " "
+ " WHERE startedAt != null "
+ " && completedAt != null "
- + " ORDER BY this.timestamp DESC "
+ + " ORDER BY timestamp DESC "
+ " RANGE 0,2"), // this should be RANGE 0,1 but results in
DataNucleus submitting "FETCH NEXT ROW ONLY"
// which SQL Server doesn't understand.
However, as workaround, SQL Server *does* understand FETCH NEXT 2 ROWS ONLY
-
@Query(
name = Nq.FIND_BY_REPLAY_STATE,
value = "SELECT "
+ " FROM " + CommandLogEntry.FQCN + " "
+ " WHERE replayState == :replayState "
- + " ORDER BY this.timestamp ASC "
+ + " ORDER BY timestamp ASC "
+ " RANGE 0,10"), // same as batch size
})
@Named(CommandLogEntry.LOGICAL_TYPE_NAME)
diff --git
a/extensions/core/commandlog/persistence-jpa/src/main/java/org/apache/isis/extensions/commandlog/jpa/dom/CommandLogEntry.java
b/extensions/core/commandlog/persistence-jpa/src/main/java/org/apache/isis/extensions/commandlog/jpa/dom/CommandLogEntry.java
index a86eedd845..6e19997cff 100644
---
a/extensions/core/commandlog/persistence-jpa/src/main/java/org/apache/isis/extensions/commandlog/jpa/dom/CommandLogEntry.java
+++
b/extensions/core/commandlog/persistence-jpa/src/main/java/org/apache/isis/extensions/commandlog/jpa/dom/CommandLogEntry.java
@@ -156,6 +156,11 @@ import lombok.Setter;
query = "SELECT cl "
+ " FROM CommandLogEntry cl "
+ " ORDER BY cl.timestamp DESC"),
+ @NamedQuery(
+ name = Nq.FIND_MOST_RECENT,
+ query = "SELECT cl "
+ + " FROM CommandLogEntry cl "
+ + " ORDER BY cl.timestamp DESC, cl.pk.interactionId
DESC"), // programmatic LIMIT 30
@NamedQuery(
name = Nq.FIND_RECENT_BY_USERNAME,
query = "SELECT cl "
diff --git
a/extensions/core/executionlog/applib/src/main/java/org/apache/isis/extensions/executionlog/applib/app/ExecutionLogMenu.java
b/extensions/core/executionlog/applib/src/main/java/org/apache/isis/extensions/executionlog/applib/app/ExecutionLogMenu.java
index b96d40e5c7..85b3dc0966 100644
---
a/extensions/core/executionlog/applib/src/main/java/org/apache/isis/extensions/executionlog/applib/app/ExecutionLogMenu.java
+++
b/extensions/core/executionlog/applib/src/main/java/org/apache/isis/extensions/executionlog/applib/app/ExecutionLogMenu.java
@@ -25,18 +25,12 @@ import java.util.List;
import javax.inject.Inject;
import javax.inject.Named;
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.DomainService;
-import org.apache.isis.applib.annotation.DomainServiceLayout;
-import org.apache.isis.applib.annotation.NatureOfService;
-import org.apache.isis.applib.annotation.PriorityPrecedence;
-import org.apache.isis.applib.annotation.RestrictTo;
-import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.*;
import org.apache.isis.applib.services.clock.ClockService;
import
org.apache.isis.extensions.executionlog.applib.IsisModuleExtExecutionLogApplib;
import org.apache.isis.extensions.executionlog.applib.dom.ExecutionLogEntry;
import
org.apache.isis.extensions.executionlog.applib.dom.ExecutionLogEntryRepository;
+import org.springframework.lang.Nullable;
import lombok.RequiredArgsConstructor;
@@ -44,12 +38,10 @@ import lombok.RequiredArgsConstructor;
* @since 2.0 {@index}
*/
@Named(ExecutionLogMenu.LOGICAL_TYPE_NAME)
-@DomainService(
- nature = NatureOfService.VIEW
-)
+@DomainService(nature = NatureOfService.VIEW)
@DomainServiceLayout(
- named = "Activity",
- menuBar = DomainServiceLayout.MenuBar.SECONDARY
+ menuBar = DomainServiceLayout.MenuBar.SECONDARY,
+ named = "Activity"
)
@javax.annotation.Priority(PriorityPrecedence.EARLY)
@RequiredArgsConstructor(onConstructor_ = { @Inject })
@@ -58,27 +50,68 @@ public class ExecutionLogMenu {
public static final String LOGICAL_TYPE_NAME =
IsisModuleExtExecutionLogApplib.NAMESPACE + ".ExecutionLogMenu";
- public static abstract class ActionDomainEvent
- extends
IsisModuleExtExecutionLogApplib.ActionDomainEvent<ExecutionLogMenu> { }
+ public static abstract class ActionDomainEvent<T>
+ extends IsisModuleExtExecutionLogApplib.ActionDomainEvent<T> { }
+
+
+ final ExecutionLogEntryRepository<? extends ExecutionLogEntry>
executionLogEntryRepository;
+ final ClockService clockService;
+ @Action(
+ domainEvent = findMostRecent.DomainEvent.class,
+ semantics = SemanticsOf.SAFE,
+ typeOf = ExecutionLogEntry.class
+ )
+ @ActionLayout(cssClassFa = "fa-search", sequence="20")
+ public class findMostRecent {
+ public class DomainEvent extends ActionDomainEvent<findMostRecent> { }
- @Action(semantics = SemanticsOf.SAFE)
- @ActionLayout(describedAs = "Returns the most recent execution entries")
- public List<? extends ExecutionLogEntry> findMostRecent() {
- return executionLogEntryRepository.findMostRecent();
+ @MemberSupport public List<? extends ExecutionLogEntry> act() {
+ return executionLogEntryRepository.findMostRecent();
+ }
}
- @Action(semantics = SemanticsOf.SAFE, restrictTo = RestrictTo.PROTOTYPING)
- @ActionLayout(describedAs = "Returns all entries (still to be processed)
in the outbox")
- public List<? extends ExecutionLogEntry> findAll() {
- return executionLogEntryRepository.findAll();
+ @Action(
+ domainEvent = findExecutions.DomainEvent.class,
+ semantics = SemanticsOf.SAFE,
+ typeOf = ExecutionLogEntry.class
+ )
+ @ActionLayout(cssClassFa = "fa-search", sequence="30")
+ public class findExecutions {
+ public class DomainEvent extends ActionDomainEvent<findExecutions> { }
+
+ @MemberSupport public List<? extends ExecutionLogEntry> act(
+ final @Nullable LocalDate from,
+ final @Nullable LocalDate to) {
+ return executionLogEntryRepository.findByFromAndTo(from, to);
+ }
+ @MemberSupport public LocalDate default0Act() {
+ return now().minusDays(7);
+ }
+ @MemberSupport public LocalDate default1Act() {
+ return now();
+ }
}
- final ExecutionLogEntryRepository<? extends ExecutionLogEntry>
executionLogEntryRepository;
- final ClockService clockService;
+
+ @Action(
+ domainEvent = findAll.DomainEvent.class,
+ restrictTo = RestrictTo.PROTOTYPING,
+ semantics = SemanticsOf.SAFE,
+ typeOf = ExecutionLogEntry.class
+ )
+ @ActionLayout(cssClassFa = "fa-search", sequence="40")
+ public class findAll {
+ public class DomainEvent extends ActionDomainEvent<findAll> { }
+
+ @MemberSupport public List<? extends ExecutionLogEntry> act() {
+ return executionLogEntryRepository.findAll();
+ }
+ }
+
@@ -86,4 +119,3 @@ public class ExecutionLogMenu {
return clockService.getClock().nowAsLocalDate(ZoneId.systemDefault());
}
}
-
diff --git
a/extensions/core/executionlog/applib/src/main/java/org/apache/isis/extensions/executionlog/applib/dom/ExecutionLogEntry.java
b/extensions/core/executionlog/applib/src/main/java/org/apache/isis/extensions/executionlog/applib/dom/ExecutionLogEntry.java
index b5df1ff65b..45eb2ccf1d 100644
---
a/extensions/core/executionlog/applib/src/main/java/org/apache/isis/extensions/executionlog/applib/dom/ExecutionLogEntry.java
+++
b/extensions/core/executionlog/applib/src/main/java/org/apache/isis/extensions/executionlog/applib/dom/ExecutionLogEntry.java
@@ -114,6 +114,7 @@ implements Comparable<ExecutionLogEntry>,
DomainChangeRecord, HasInteractionIdAn
public static final String FIND_BY_TIMESTAMP_BETWEEN =
LOGICAL_TYPE_NAME + ".findByTimestampBetween";
public static final String FIND_BY_TIMESTAMP_AFTER = LOGICAL_TYPE_NAME
+ ".findByTimestampAfter";
public static final String FIND_BY_TIMESTAMP_BEFORE =
LOGICAL_TYPE_NAME + ".findByTimestampBefore";
+ public static final String FIND = LOGICAL_TYPE_NAME + ".find";
public static final String FIND_MOST_RECENT = LOGICAL_TYPE_NAME +
".findMostRecent";
public static final String FIND_RECENT_BY_USERNAME = LOGICAL_TYPE_NAME
+ ".findRecentByUsername";
public static final String FIND_RECENT_BY_TARGET = LOGICAL_TYPE_NAME +
".findRecentByTarget";
diff --git
a/extensions/core/executionlog/applib/src/main/java/org/apache/isis/extensions/executionlog/applib/dom/ExecutionLogEntryRepository.java
b/extensions/core/executionlog/applib/src/main/java/org/apache/isis/extensions/executionlog/applib/dom/ExecutionLogEntryRepository.java
index 8afd7e46ae..b5c8c995d7 100644
---
a/extensions/core/executionlog/applib/src/main/java/org/apache/isis/extensions/executionlog/applib/dom/ExecutionLogEntryRepository.java
+++
b/extensions/core/executionlog/applib/src/main/java/org/apache/isis/extensions/executionlog/applib/dom/ExecutionLogEntryRepository.java
@@ -19,6 +19,9 @@
package org.apache.isis.extensions.executionlog.applib.dom;
import java.sql.Timestamp;
+import java.time.Instant;
+import java.time.LocalDate;
+import java.time.ZoneId;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
@@ -33,8 +36,10 @@ import
org.apache.isis.applib.services.factory.FactoryService;
import org.apache.isis.applib.services.iactn.Execution;
import org.apache.isis.applib.services.repository.RepositoryService;
import org.apache.isis.core.config.environment.IsisSystemEnvironment;
+import org.springframework.lang.Nullable;
import lombok.Getter;
+import lombok.val;
/**
* Provides supporting functionality for querying and persisting
@@ -97,9 +102,35 @@ public abstract class ExecutionLogEntryRepository<E extends
ExecutionLogEntry> {
);
}
+ public List<E> findByFromAndTo(
+ final @Nullable LocalDate from,
+ final @Nullable LocalDate to) {
+ val fromTs = toTimestampStartOfDayWithOffset(from, 0);
+ val toTs = toTimestampStartOfDayWithOffset(to, 1);
+
+ final Query<E> query;
+ if(from != null) {
+ if(to != null) {
+ query = Query.named(executionLogEntryClass,
ExecutionLogEntry.Nq.FIND_BY_TIMESTAMP_BETWEEN)
+ .withParameter("from", fromTs)
+ .withParameter("to", toTs);
+ } else {
+ query = Query.named(executionLogEntryClass,
ExecutionLogEntry.Nq.FIND_BY_TIMESTAMP_AFTER)
+ .withParameter("from", fromTs);
+ }
+ } else {
+ if(to != null) {
+ query = Query.named(executionLogEntryClass,
ExecutionLogEntry.Nq.FIND_BY_TIMESTAMP_BEFORE)
+ .withParameter("to", toTs);
+ } else {
+ query = Query.named(executionLogEntryClass,
ExecutionLogEntry.Nq.FIND);
+ }
+ }
+ return repositoryService().allMatches(query);
+ }
+
public List<E> findMostRecent() {
- return repositoryService().allMatches(
- Query.named(executionLogEntryClass,
ExecutionLogEntry.Nq.FIND_MOST_RECENT));
+ return findMostRecent(100);
}
public List<E> findMostRecent(final int limit) {
@@ -207,4 +238,16 @@ public abstract class ExecutionLogEntryRepository<E
extends ExecutionLogEntry> {
}
+ private static Timestamp toTimestampStartOfDayWithOffset(
+ final @Nullable LocalDate dt,
+ final int daysOffset) {
+
+ return dt!=null
+ ? new java.sql.Timestamp(
+
Instant.from(dt.atStartOfDay().plusDays(daysOffset).atZone(ZoneId.systemDefault()))
+ .toEpochMilli())
+ : null;
+ }
+
+
}
diff --git
a/extensions/core/executionlog/persistence-jdo/src/main/java/org/apache/isis/extensions/executionlog/jdo/dom/ExecutionLogEntry.java
b/extensions/core/executionlog/persistence-jdo/src/main/java/org/apache/isis/extensions/executionlog/jdo/dom/ExecutionLogEntry.java
index f0ce8392e0..ea61bc16b5 100644
---
a/extensions/core/executionlog/persistence-jdo/src/main/java/org/apache/isis/extensions/executionlog/jdo/dom/ExecutionLogEntry.java
+++
b/extensions/core/executionlog/persistence-jdo/src/main/java/org/apache/isis/extensions/executionlog/jdo/dom/ExecutionLogEntry.java
@@ -114,11 +114,17 @@ import lombok.Setter;
+ " FROM " + ExecutionLogEntry.FQCN + " "
+ " WHERE timestamp <= :timestamp "
+ " ORDER BY timestamp DESC, interactionId DESC, sequence
DESC"),
+ @Query(
+ name = Nq.FIND,
+ value = "SELECT "
+ + " FROM " + ExecutionLogEntry.FQCN + " "
+ + " ORDER BY timestamp DESC"),
@Query(
name = Nq.FIND_MOST_RECENT,
value = "SELECT "
+ " FROM " + ExecutionLogEntry.FQCN + " "
- + " ORDER BY timestamp DESC, interactionId DESC, sequence
DESC"),
+ + " ORDER BY timestamp DESC, interactionId DESC, sequence
DESC"
+ + " RANGE 0,100"),
@Query(
name = Nq.FIND_RECENT_BY_USERNAME,
value = "SELECT "
diff --git
a/extensions/core/executionlog/persistence-jpa/src/main/java/org/apache/isis/extensions/executionlog/jpa/dom/ExecutionLogEntry.java
b/extensions/core/executionlog/persistence-jpa/src/main/java/org/apache/isis/extensions/executionlog/jpa/dom/ExecutionLogEntry.java
index b66e579f8d..f8a976882a 100644
---
a/extensions/core/executionlog/persistence-jpa/src/main/java/org/apache/isis/extensions/executionlog/jpa/dom/ExecutionLogEntry.java
+++
b/extensions/core/executionlog/persistence-jpa/src/main/java/org/apache/isis/extensions/executionlog/jpa/dom/ExecutionLogEntry.java
@@ -117,6 +117,11 @@ import lombok.Setter;
+ " FROM ExecutionLogEntry ele "
+ " WHERE ele.timestamp >= :timestamp "
+ " ORDER BY ele.timestamp DESC, ele.pk.interactionId DESC,
ele.pk.sequence DESC"),
+ @NamedQuery(
+ name = Nq.FIND,
+ query = "SELECT ele "
+ + " FROM ExecutionLogEntry ele "
+ + " ORDER BY ele.timestamp DESC"),
@NamedQuery(
name = Nq.FIND_BY_TIMESTAMP_BEFORE,
query = "SELECT ele "
@@ -127,7 +132,7 @@ import lombok.Setter;
name = Nq.FIND_MOST_RECENT,
query = "SELECT ele "
+ " FROM ExecutionLogEntry ele "
- + " ORDER BY ele.timestamp DESC, ele.pk.interactionId DESC,
ele.pk.sequence DESC"),
+ + " ORDER BY ele.timestamp DESC, ele.pk.interactionId DESC,
ele.pk.sequence DESC"), // programmatic limit 100
@NamedQuery(
name = Nq.FIND_RECENT_BY_USERNAME,
query = "SELECT ele "
diff --git
a/extensions/security/audittrail/applib/src/main/java/org/apache/isis/extensions/audittrail/applib/IsisModuleExtAuditTrailApplib.java
b/extensions/security/audittrail/applib/src/main/java/org/apache/isis/extensions/audittrail/applib/IsisModuleExtAuditTrailApplib.java
index a516561e70..5bccd5b527 100644
---
a/extensions/security/audittrail/applib/src/main/java/org/apache/isis/extensions/audittrail/applib/IsisModuleExtAuditTrailApplib.java
+++
b/extensions/security/audittrail/applib/src/main/java/org/apache/isis/extensions/audittrail/applib/IsisModuleExtAuditTrailApplib.java
@@ -38,7 +38,7 @@ import
org.apache.isis.extensions.audittrail.applib.spiimpl.EntityPropertyChange
})
public class IsisModuleExtAuditTrailApplib {
- public static final String NAMESPACE = "isis.ext.audittrail";
+ public static final String NAMESPACE = "isis.ext.auditTrail";
public static final String SCHEMA = "isisExtAuditTrail";
public abstract static class TitleUiEvent<S>
diff --git
a/extensions/security/audittrail/applib/src/main/java/org/apache/isis/extensions/audittrail/applib/app/AuditTrailMenu.java
b/extensions/security/audittrail/applib/src/main/java/org/apache/isis/extensions/audittrail/applib/app/AuditTrailMenu.java
index c0d91bd39f..5a9dd4b070 100644
---
a/extensions/security/audittrail/applib/src/main/java/org/apache/isis/extensions/audittrail/applib/app/AuditTrailMenu.java
+++
b/extensions/security/audittrail/applib/src/main/java/org/apache/isis/extensions/audittrail/applib/app/AuditTrailMenu.java
@@ -21,20 +21,15 @@
package org.apache.isis.extensions.audittrail.applib.app;
import java.time.LocalDate;
+import java.time.ZoneId;
import java.util.List;
import javax.inject.Inject;
import javax.inject.Named;
+import org.apache.isis.applib.annotation.*;
import org.springframework.lang.Nullable;
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.DomainService;
-import org.apache.isis.applib.annotation.DomainServiceLayout;
-import org.apache.isis.applib.annotation.MemberSupport;
-import org.apache.isis.applib.annotation.NatureOfService;
-import org.apache.isis.applib.annotation.SemanticsOf;
import org.apache.isis.applib.services.clock.ClockService;
import
org.apache.isis.extensions.audittrail.applib.IsisModuleExtAuditTrailApplib;
import org.apache.isis.extensions.audittrail.applib.dom.AuditTrailEntry;
@@ -44,34 +39,51 @@ import lombok.RequiredArgsConstructor;
/**
- * This service exposes a <Sessions> menu to the secondary menu bar for
searching for sessions.
+ * @since 2.0 {@index}
*/
@Named(AuditTrailMenu.LOGICAL_TYPE_NAME)
@DomainService(nature = NatureOfService.VIEW)
@DomainServiceLayout(
- menuBar = DomainServiceLayout.MenuBar.SECONDARY,
- named = "Activity"
+ menuBar = DomainServiceLayout.MenuBar.SECONDARY,
+ named = "Activity"
)
-@RequiredArgsConstructor(onConstructor_ = {@Inject})
+@RequiredArgsConstructor(onConstructor_ = { @Inject })
public class AuditTrailMenu {
- static final String LOGICAL_TYPE_NAME =
IsisModuleExtAuditTrailApplib.NAMESPACE + ".AuditTrailMenu";
+ public static final String LOGICAL_TYPE_NAME =
+ IsisModuleExtAuditTrailApplib.NAMESPACE + ".AuditTrailMenu";
+
+ public static abstract class ActionDomainEvent<T>
+ extends IsisModuleExtAuditTrailApplib.ActionDomainEvent<T> { }
- public static abstract class ActionDomainEvent<T> extends
IsisModuleExtAuditTrailApplib.ActionDomainEvent<T> { }
final AuditTrailEntryRepository<? extends AuditTrailEntry>
auditTrailEntryRepository;
final ClockService clockService;
+
@Action(
- domainEvent = findAuditEntries.ActionDomainEvent.class,
- semantics = SemanticsOf.SAFE
+ domainEvent = findMostRecent.DomainEvent.class,
+ semantics = SemanticsOf.SAFE,
+ typeOf = AuditTrailEntry.class
)
- @ActionLayout(
- cssClassFa = "fa-search"
+ @ActionLayout(cssClassFa = "fa-search", sequence="20")
+ public class findMostRecent {
+ public class DomainEvent extends ActionDomainEvent<findMostRecent> { }
+
+ @MemberSupport public List<? extends AuditTrailEntry> act() {
+ return auditTrailEntryRepository.findMostRecent();
+ }
+ }
+
+
+ @Action(
+ domainEvent = findAuditEntries.DomainEvent.class,
+ semantics = SemanticsOf.SAFE,
+ typeOf = AuditTrailEntry.class
)
+ @ActionLayout(cssClassFa = "fa-search", sequence="30")
public class findAuditEntries {
-
- public class ActionDomainEvent extends
AuditTrailMenu.ActionDomainEvent<findAuditEntries> { }
+ public class DomainEvent extends ActionDomainEvent<findAuditEntries> {
}
@MemberSupport public List<? extends AuditTrailEntry> act(
final @Nullable LocalDate from,
@@ -79,11 +91,34 @@ public class AuditTrailMenu {
return auditTrailEntryRepository.findByFromAndTo(from, to);
}
@MemberSupport public LocalDate default0Act() {
- return clockService.getClock().nowAsLocalDate().minusDays(7);
+ return now().minusDays(7);
}
@MemberSupport public LocalDate default1Act() {
- return clockService.getClock().nowAsLocalDate();
+ return now();
}
}
+
+
+ @Action(
+ domainEvent = findAll.DomainEvent.class,
+ restrictTo = RestrictTo.PROTOTYPING,
+ semantics = SemanticsOf.SAFE,
+ typeOf = AuditTrailEntry.class
+ )
+ @ActionLayout(cssClassFa = "fa-search", sequence="40")
+ public class findAll {
+ public class DomainEvent extends ActionDomainEvent<findAll> { }
+
+ @MemberSupport public List<? extends AuditTrailEntry> act() {
+ return auditTrailEntryRepository.findAll();
+ }
+ }
+
+
+
+
+ private LocalDate now() {
+ return clockService.getClock().nowAsLocalDate(ZoneId.systemDefault());
+ }
}
diff --git
a/extensions/security/audittrail/applib/src/main/java/org/apache/isis/extensions/audittrail/applib/dom/AuditTrailEntry.java
b/extensions/security/audittrail/applib/src/main/java/org/apache/isis/extensions/audittrail/applib/dom/AuditTrailEntry.java
index e0131cf8f0..e4b1cbe541 100644
---
a/extensions/security/audittrail/applib/src/main/java/org/apache/isis/extensions/audittrail/applib/dom/AuditTrailEntry.java
+++
b/extensions/security/audittrail/applib/src/main/java/org/apache/isis/extensions/audittrail/applib/dom/AuditTrailEntry.java
@@ -82,6 +82,7 @@ public abstract class AuditTrailEntry implements
DomainChangeRecord, Comparable<
public static final String FIND_BY_TIMESTAMP_AFTER =
"findByTimestampAfter";
public static final String FIND_BY_TIMESTAMP_BEFORE =
"findByTimestampBefore";
public static final String FIND = "find";
+ public static final String FIND_MOST_RECENT = LOGICAL_TYPE_NAME +
".findMostRecent";
}
// -- UI & DOMAIN EVENTS
diff --git
a/extensions/security/audittrail/applib/src/main/java/org/apache/isis/extensions/audittrail/applib/dom/AuditTrailEntryRepository.java
b/extensions/security/audittrail/applib/src/main/java/org/apache/isis/extensions/audittrail/applib/dom/AuditTrailEntryRepository.java
index f2436c5f64..269f191f22 100644
---
a/extensions/security/audittrail/applib/src/main/java/org/apache/isis/extensions/audittrail/applib/dom/AuditTrailEntryRepository.java
+++
b/extensions/security/audittrail/applib/src/main/java/org/apache/isis/extensions/audittrail/applib/dom/AuditTrailEntryRepository.java
@@ -165,6 +165,16 @@ public abstract class AuditTrailEntryRepository<E extends
AuditTrailEntry> {
}
+ public List<E> findMostRecent() {
+ return findMostRecent(100);
+ }
+
+ public List<E> findMostRecent(final int limit) {
+ return repositoryService.allMatches(
+ Query.named(auditTrailEntryClass,
AuditTrailEntry.Nq.FIND_MOST_RECENT).withLimit(limit));
+ }
+
+
/**
* intended for testing only
diff --git
a/extensions/security/audittrail/persistence-jdo/src/main/java/org/apache/isis/extensions/audittrail/jdo/dom/AuditTrailEntry.java
b/extensions/security/audittrail/persistence-jdo/src/main/java/org/apache/isis/extensions/audittrail/jdo/dom/AuditTrailEntry.java
index 03d7a28828..35243c0ae3 100644
---
a/extensions/security/audittrail/persistence-jdo/src/main/java/org/apache/isis/extensions/audittrail/jdo/dom/AuditTrailEntry.java
+++
b/extensions/security/audittrail/persistence-jdo/src/main/java/org/apache/isis/extensions/audittrail/jdo/dom/AuditTrailEntry.java
@@ -91,14 +91,14 @@ import lombok.Setter;
+ " FROM " + AuditTrailEntry.FQCN + " "
+ " WHERE target == :target "
+ " && timestamp >= :from "
- + " ORDER BY this.timestamp DESC"),
+ + " ORDER BY timestamp DESC"),
@Query(
name = Nq.FIND_BY_TARGET_AND_TIMESTAMP_BEFORE,
value = "SELECT "
+ " FROM " + AuditTrailEntry.FQCN + " "
+ " WHERE target == :target "
+ " && timestamp <= :to "
- + " ORDER BY this.timestamp DESC"),
+ + " ORDER BY timestamp DESC"),
@Query(
name = Nq.FIND_BY_TARGET,
value = "SELECT "
@@ -111,24 +111,30 @@ import lombok.Setter;
+ " FROM " + AuditTrailEntry.FQCN + " "
+ " WHERE timestamp >= :from "
+ " && timestamp <= :to "
- + " ORDER BY this.timestamp DESC"),
+ + " ORDER BY timestamp DESC"),
@Query(
name = Nq.FIND_BY_TIMESTAMP_AFTER,
value = "SELECT "
+ " FROM " + AuditTrailEntry.FQCN + " "
+ " WHERE timestamp >= :from "
- + " ORDER BY this.timestamp DESC"),
+ + " ORDER BY timestamp DESC"),
@Query(
name = Nq.FIND_BY_TIMESTAMP_BEFORE,
value = "SELECT "
+ " FROM " + AuditTrailEntry.FQCN + " "
+ " WHERE timestamp <= :to "
- + " ORDER BY this.timestamp DESC"),
+ + " ORDER BY timestamp DESC"),
@Query(
name = Nq.FIND,
value = "SELECT "
+ " FROM " + AuditTrailEntry.FQCN + " "
- + " ORDER BY this.timestamp DESC"),
+ + " ORDER BY timestamp DESC"),
+ @Query(
+ name = Nq.FIND_MOST_RECENT,
+ value = "SELECT "
+ + " FROM " + AuditTrailEntry.FQCN + " "
+ + " ORDER BY timestamp DESC, interactionId DESC, sequence
DESC"
+ + " RANGE 0,100"),
@Query(
name = Nq.FIND_RECENT_BY_TARGET_AND_PROPERTY_ID,
value = "SELECT "
diff --git
a/extensions/security/audittrail/persistence-jpa/src/main/java/org/apache/isis/extensions/audittrail/jpa/dom/AuditTrailEntry.java
b/extensions/security/audittrail/persistence-jpa/src/main/java/org/apache/isis/extensions/audittrail/jpa/dom/AuditTrailEntry.java
index 8d7d6243eb..d0d00a32cf 100644
---
a/extensions/security/audittrail/persistence-jpa/src/main/java/org/apache/isis/extensions/audittrail/jpa/dom/AuditTrailEntry.java
+++
b/extensions/security/audittrail/persistence-jpa/src/main/java/org/apache/isis/extensions/audittrail/jpa/dom/AuditTrailEntry.java
@@ -130,6 +130,11 @@ import lombok.Setter;
query = "SELECT e "
+ " FROM AuditTrailEntry e "
+ " ORDER BY e.timestamp DESC"),
+ @NamedQuery(
+ name = Nq.FIND_MOST_RECENT,
+ query = "SELECT e "
+ + " FROM AuditTrailEntry e "
+ + " ORDER BY e.timestamp DESC, e.interactionId DESC,
e.sequence DESC"), // programmatic limit 100
@NamedQuery(
name = Nq.FIND_RECENT_BY_TARGET_AND_PROPERTY_ID,
query = "SELECT e "
@@ -176,7 +181,6 @@ extends
org.apache.isis.extensions.audittrail.applib.dom.AuditTrailEntry {
- @Getter @Setter
private String username;
@Column(nullable = Username.NULLABLE, length = Username.MAX_LENGTH)
@@ -191,7 +195,6 @@ extends
org.apache.isis.extensions.audittrail.applib.dom.AuditTrailEntry {
- @Getter @Setter
private java.sql.Timestamp timestamp;
@Column(nullable = Timestamp.NULLABLE)
@@ -205,7 +208,6 @@ extends
org.apache.isis.extensions.audittrail.applib.dom.AuditTrailEntry {
}
- @Getter @Setter
private UUID interactionId;
@Convert(converter = JavaUtilUuidConverter.class)
@@ -220,7 +222,6 @@ extends
org.apache.isis.extensions.audittrail.applib.dom.AuditTrailEntry {
}
- @Getter @Setter
private int sequence;
@Column(nullable = Sequence.NULLABLE)
@@ -235,7 +236,6 @@ extends
org.apache.isis.extensions.audittrail.applib.dom.AuditTrailEntry {
- @Getter @Setter
private Bookmark target;
@Convert(converter = IsisBookmarkConverter.class)
@@ -250,7 +250,6 @@ extends
org.apache.isis.extensions.audittrail.applib.dom.AuditTrailEntry {
}
- @Getter @Setter
private String logicalMemberIdentifier;
@Column(nullable = LogicalMemberIdentifier.NULLABLE, length =
LogicalMemberIdentifier.MAX_LENGTH)
@@ -264,7 +263,6 @@ extends
org.apache.isis.extensions.audittrail.applib.dom.AuditTrailEntry {
}
- @Getter @Setter
private String propertyId;
@Column(nullable = PropertyId.NULLABLE, length = PropertyId.MAX_LENGTH)
@@ -278,7 +276,6 @@ extends
org.apache.isis.extensions.audittrail.applib.dom.AuditTrailEntry {
}
- @Getter @Setter
private String preValue;
@Column(nullable = PreValue.NULLABLE, length = PreValue.MAX_LENGTH)
@@ -292,7 +289,6 @@ extends
org.apache.isis.extensions.audittrail.applib.dom.AuditTrailEntry {
}
- @Getter @Setter
private String postValue;