You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2021/07/13 05:43:00 UTC
[isis-app-simpleapp] branch jpa-SNAPSHOT updated: improvements
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch jpa-SNAPSHOT
in repository https://gitbox.apache.org/repos/asf/isis-app-simpleapp.git
The following commit(s) were added to refs/heads/jpa-SNAPSHOT by this push:
new 95f8238 improvements
95f8238 is described below
commit 95f8238777ba0fec36058eb300e4435636275274
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Tue Jul 13 06:31:55 2021 +0100
improvements
- lowercase schema
- eclipselink properties to generate create-db-schema.sql
- associateWith fix
- bump version of spring-instrument
- remove old reference to JDO in README
- add commented out code for XrayEnable
- logger entries for auditing etc.
- update menubars.layout for security and impersonation
---
.gitignore | 4 ++-
lib/README.txt | 2 +-
lib/spring-instrument-5.3.5.jar | Bin 7429 -> 0 bytes
lib/spring-instrument-5.3.8.jar | Bin 0 -> 7429 bytes
.../modules/simple/dom/so/SimpleObject.java | 20 +++++++-------
.../modules/simple/dom/so/SimpleObjects.java | 10 ++++---
webapp/pom.xml | 2 +-
.../src/main/java/domainapp/webapp/SimpleApp.java | 3 ++-
.../java/domainapp/webapp/quartz/QuartzModule.java | 4 ---
webapp/src/main/resources/application.yml | 4 +--
.../main/resources/config/application.properties | 15 ++++++++---
webapp/src/main/resources/log4j2-spring.xml | 5 ++++
webapp/src/main/resources/menubars.layout.xml | 30 ++++++++++++++++++++-
13 files changed, 72 insertions(+), 27 deletions(-)
diff --git a/.gitignore b/.gitignore
index 371262a..568bbd5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -40,4 +40,6 @@ pom.xml.versionsBackup
rebel.xml
translations.pot
-.flattened-pom.xml
\ No newline at end of file
+.flattened-pom.xml
+
+create-db-schema.sql
diff --git a/lib/README.txt b/lib/README.txt
index 8cd1712..db3c441 100644
--- a/lib/README.txt
+++ b/lib/README.txt
@@ -1,3 +1,3 @@
If eclipselink.weaving=true, then run using JVM argument:
- -javaagent:lib/spring-instrument-5.3.5.jar
+ -javaagent:lib/spring-instrument-5.3.8.jar
diff --git a/lib/spring-instrument-5.3.5.jar b/lib/spring-instrument-5.3.5.jar
deleted file mode 100644
index 164db3b..0000000
Binary files a/lib/spring-instrument-5.3.5.jar and /dev/null differ
diff --git a/lib/spring-instrument-5.3.8.jar b/lib/spring-instrument-5.3.8.jar
new file mode 100644
index 0000000..c0a0a9b
Binary files /dev/null and b/lib/spring-instrument-5.3.8.jar differ
diff --git a/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleObject.java b/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleObject.java
index 1f7a255..48c143c 100644
--- a/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleObject.java
+++ b/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleObject.java
@@ -10,12 +10,14 @@ import org.apache.isis.applib.annotation.ActionLayout;
import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.applib.annotation.DomainObjectLayout;
import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.Property;
import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Publishing;
import org.apache.isis.applib.jaxb.PersistentEntityAdapter;
import org.apache.isis.applib.services.message.MessageService;
import org.apache.isis.applib.services.repository.RepositoryService;
import org.apache.isis.applib.services.title.TitleService;
-import org.apache.isis.persistence.jpa.applib.integration.JpaEntityInjectionPointResolver;
+import org.apache.isis.persistence.jpa.applib.integration.IsisEntityListener;
import static org.apache.isis.applib.annotation.SemanticsOf.IDEMPOTENT;
import static org.apache.isis.applib.annotation.SemanticsOf.NON_IDEMPOTENT_ARE_YOU_SURE;
@@ -33,7 +35,7 @@ import domainapp.modules.simple.types.Notes;
@javax.persistence.Entity
@javax.persistence.Table(
- schema="SIMPLE",
+ schema="simple",
uniqueConstraints = {
@javax.persistence.UniqueConstraint(name = "SimpleObject_name_UNQ", columnNames = {"name"})
}
@@ -46,8 +48,8 @@ import domainapp.modules.simple.types.Notes;
"WHERE so.name LIKE :name"
)
})
-@javax.persistence.EntityListeners(JpaEntityInjectionPointResolver.class) // injection support
-@DomainObject(objectType = "simple.SimpleObject")
+@javax.persistence.EntityListeners(IsisEntityListener.class)
+@DomainObject(logicalTypeName = "simple.SimpleObject", entityChangePublishing = Publishing.ENABLED)
@DomainObjectLayout()
@NoArgsConstructor(access = AccessLevel.PUBLIC)
@XmlJavaTypeAdapter(PersistentEntityAdapter.class)
@@ -92,11 +94,12 @@ public class SimpleObject implements Comparable<SimpleObject> {
@Notes
@javax.persistence.Column(length = Notes.MAX_LEN, nullable = true)
@Getter @Setter
+ @Property(commandPublishing = Publishing.ENABLED, executionPublishing = Publishing.ENABLED)
@PropertyLayout(fieldSetId = "name", sequence = "2")
private String notes;
- @Action(semantics = IDEMPOTENT)
+ @Action(semantics = IDEMPOTENT, commandPublishing = Publishing.ENABLED, executionPublishing = Publishing.ENABLED)
@ActionLayout(associateWith = "name", promptStyle = PromptStyle.INLINE)
public SimpleObject updateName(
@Name final String name) {
@@ -116,11 +119,10 @@ public class SimpleObject implements Comparable<SimpleObject> {
}
- @Action(semantics = NON_IDEMPOTENT_ARE_YOU_SURE, associateWith = "name")
+ @Action(semantics = NON_IDEMPOTENT_ARE_YOU_SURE)
@ActionLayout(
- position = ActionLayout.Position.PANEL,
- describedAs = "Deletes this object from the persistent datastore"
- )
+ associateWith = "name", position = ActionLayout.Position.PANEL,
+ describedAs = "Deletes this object from the persistent datastore")
public void delete() {
final String title = titleService.titleOf(this);
messageService.informUser(String.format("'%s' deleted", title));
diff --git a/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleObjects.java b/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleObjects.java
index 329b107..e67d9bb 100644
--- a/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleObjects.java
+++ b/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleObjects.java
@@ -10,6 +10,7 @@ import org.apache.isis.applib.annotation.ActionLayout;
import org.apache.isis.applib.annotation.BookmarkPolicy;
import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.applib.annotation.PriorityPrecedence;
import org.apache.isis.applib.annotation.Programmatic;
import org.apache.isis.applib.annotation.PromptStyle;
import org.apache.isis.applib.annotation.SemanticsOf;
@@ -22,13 +23,14 @@ import domainapp.modules.simple.types.Name;
@DomainService(
nature = NatureOfService.VIEW,
objectType = "simple.SimpleObjects"
- )
+)
+@javax.annotation.Priority(PriorityPrecedence.EARLY)
@lombok.RequiredArgsConstructor(onConstructor_ = {@Inject} )
public class SimpleObjects {
- private final RepositoryService repositoryService;
- private final JpaSupportService jpaSupportService;
- private final SimpleObjectRepository simpleObjectRepository;
+ final RepositoryService repositoryService;
+ final JpaSupportService jpaSupportService;
+ final SimpleObjectRepository simpleObjectRepository;
@Action(semantics = SemanticsOf.NON_IDEMPOTENT)
diff --git a/webapp/pom.xml b/webapp/pom.xml
index 1540bbf..f843b8e 100644
--- a/webapp/pom.xml
+++ b/webapp/pom.xml
@@ -13,7 +13,7 @@
<description>
Assembles and runs both the Wicket viewer and the Restfulobjects viewer
- in a single webapp configured to run using the JDO/DataNucleus object store.
+ in a single webapp configured to run using the JPA/EclipseLink object store.
</description>
<packaging>jar</packaging>
diff --git a/webapp/src/main/java/domainapp/webapp/SimpleApp.java b/webapp/src/main/java/domainapp/webapp/SimpleApp.java
index dcce3c6..7dedb13 100644
--- a/webapp/src/main/java/domainapp/webapp/SimpleApp.java
+++ b/webapp/src/main/java/domainapp/webapp/SimpleApp.java
@@ -9,7 +9,8 @@ import org.apache.isis.core.config.presets.IsisPresets;
@SpringBootApplication
@Import({
- AppManifest.class,
+ AppManifest.class
+// , XrayEnable.class
})
public class SimpleApp extends SpringBootServletInitializer {
diff --git a/webapp/src/main/java/domainapp/webapp/quartz/QuartzModule.java b/webapp/src/main/java/domainapp/webapp/quartz/QuartzModule.java
index 6bb080d..3220d64 100644
--- a/webapp/src/main/java/domainapp/webapp/quartz/QuartzModule.java
+++ b/webapp/src/main/java/domainapp/webapp/quartz/QuartzModule.java
@@ -2,16 +2,12 @@ package domainapp.webapp.quartz;
import org.quartz.JobDetail;
import org.quartz.SimpleTrigger;
-import org.quartz.Trigger;
-import org.quartz.TriggerBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.quartz.JobDetailFactoryBean;
import org.springframework.scheduling.quartz.SimpleTriggerFactoryBean;
-import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
-
import lombok.val;
import domainapp.webapp.quartz.job.SampleJob;
diff --git a/webapp/src/main/resources/application.yml b/webapp/src/main/resources/application.yml
index a9ba650..acb197c 100644
--- a/webapp/src/main/resources/application.yml
+++ b/webapp/src/main/resources/application.yml
@@ -77,11 +77,11 @@ isis:
eclipselink:
# if enabled, then must be run with JVM arg:
- # -javaagent:lib/spring-instrument-5.3.5.jar
+ # -javaagent:lib/spring-instrument-5.3.8.jar
weaving: false
# if weaving subproperties are required, then specify all eclipselink.weaving
# properties using application.properties instead (it's not possible to
- # specify both eclipselink.weaving property and its subsproperties using yaml syntax)
+ # specify both eclipselink.weaving property and its subproperties using yaml syntax)
resteasy:
jaxrs:
diff --git a/webapp/src/main/resources/config/application.properties b/webapp/src/main/resources/config/application.properties
index 19442f0..8a7dcce 100644
--- a/webapp/src/main/resources/config/application.properties
+++ b/webapp/src/main/resources/config/application.properties
@@ -11,12 +11,21 @@
spring.flyway.enabled=false
spring.sql.init.platform=h2
-spring.datasource.url=jdbc:h2:mem:simple
+spring.datasource.url=jdbc:h2:mem:simple;DATABASE_TO_UPPER=false
spring.datasource.driver-class-name=org.h2.Driver
-isis.persistence.schema.create-schema-sql-template=CREATE SCHEMA IF NOT EXISTS %S
-isis.persistence.schema.auto-create-schemas=SIMPLE
+isis.persistence.schema.create-schema-sql-template=CREATE SCHEMA IF NOT EXISTS %s
+isis.persistence.schema.auto-create-schemas=simple
+#eclipselink.weaving=true
+eclipselink.deploy-on-startup=true
+eclipselink.ddl-generation.output-mode=both
+eclipselink.ddl-generation=create-tables
+eclipselink.create-ddl-jdbc-file-name=create-db-schema.sql
+eclipselink.application-location=.
+eclipselink.jpa.upper-case-column-names=false
# uncomment to run during bootstrap
#isis.testing.fixtures.initial-script = domainapp.webapp.application.fixture.scenarios.DomainAppDemo
+
+
diff --git a/webapp/src/main/resources/log4j2-spring.xml b/webapp/src/main/resources/log4j2-spring.xml
index ffa0765..dc4176e 100644
--- a/webapp/src/main/resources/log4j2-spring.xml
+++ b/webapp/src/main/resources/log4j2-spring.xml
@@ -18,6 +18,11 @@
<!-- silence Wicket -->
<Logger name="org.apache.wicket.page.PartialPageUpdate" level="error" />
+ <Logger name="org.apache.isis.applib.services.publishing.log.CommandLogger" level="debug" />
+ <Logger name="org.apache.isis.applib.services.publishing.log.ExecutionLogger" level="debug" />
+ <Logger name="org.apache.isis.applib.services.publishing.log.EntityChangesLogger" level="debug" />
+ <Logger name="org.apache.isis.applib.services.publishing.log.EntityPropertyChangeLogger" level="debug" />
+
<Logger name="org.apache.catalina.startup.DigesterFactory" level="error" />
<Logger name="org.apache.catalina.util.LifecycleBase" level="error" />
<Logger name="org.apache.coyote.http11.Http11NioProtocol" level="warn" />
diff --git a/webapp/src/main/resources/menubars.layout.xml b/webapp/src/main/resources/menubars.layout.xml
index d8d0d55..3d8cd56 100644
--- a/webapp/src/main/resources/menubars.layout.xml
+++ b/webapp/src/main/resources/menubars.layout.xml
@@ -31,6 +31,8 @@
<mb3:named>Meta Model and Features</mb3:named>
<mb3:serviceAction objectType="isis.applib.MetaModelServiceMenu" id="downloadMetaModelXml"/>
<mb3:serviceAction objectType="isis.applib.MetaModelServiceMenu" id="downloadMetaModelCsv"/>
+ <mb3:serviceAction objectType="isis.applib.MetaModelServiceMenu" id="downloadMetaModelAscii"/>
+ <mb3:serviceAction objectType="isis.applib.MetaModelServiceMenu" id="downloadMetaModelDiff"/>
<mb3:serviceAction objectType="isis.feat.ApplicationFeatureMenu" id="allNamespaces"/>
<mb3:serviceAction objectType="isis.feat.ApplicationFeatureMenu" id="allTypes"/>
<mb3:serviceAction objectType="isis.feat.ApplicationFeatureMenu" id="allActions"/>
@@ -56,6 +58,31 @@
<mb3:serviceAction objectType="isis.applib.TranslationServicePoMenu" id="switchToWritingTranslations"/>
</mb3:section>
</mb3:menu>
+ <mb3:menu>
+ <mb3:named>Security</mb3:named>
+ <mb3:section>
+ <mb3:named>Users</mb3:named>
+ <mb3:serviceAction objectType="isis.ext.secman.ApplicationUserMenu" id="userManager"/>
+ <mb3:serviceAction objectType="isis.ext.secman.ApplicationUserMenu" id="findUsers"/>
+ </mb3:section>
+ <mb3:section>
+ <mb3:named>Roles</mb3:named>
+ <mb3:serviceAction objectType="isis.ext.secman.ApplicationRoleMenu" id="findRoles"/>
+ <mb3:serviceAction objectType="isis.ext.secman.ApplicationRoleMenu" id="newRole"/>
+ <mb3:serviceAction objectType="isis.ext.secman.ApplicationRoleMenu" id="allRoles"/>
+ </mb3:section>
+ <mb3:section>
+ <mb3:named>Permissions</mb3:named>
+ <mb3:serviceAction objectType="isis.ext.secman.ApplicationPermissionMenu" id="allPermissions"/>
+ <mb3:serviceAction objectType="isis.ext.secman.ApplicationPermissionMenu" id="findOrphanedPermissions"/>
+ </mb3:section>
+ <mb3:section>
+ <mb3:named>Tenancies</mb3:named>
+ <mb3:serviceAction objectType="isis.ext.secman.ApplicationTenancyMenu" id="findTenancies"/>
+ <mb3:serviceAction objectType="isis.ext.secman.ApplicationTenancyMenu" id="newTenancy"/>
+ <mb3:serviceAction objectType="isis.ext.secman.ApplicationTenancyMenu" id="allTenancies"/>
+ </mb3:section>
+ </mb3:menu>
</mb3:secondary>
<mb3:tertiary>
<mb3:menu>
@@ -68,9 +95,10 @@
<mb3:named>Impersonate</mb3:named>
<mb3:serviceAction objectType="isis.sudo.ImpersonateMenu" id="impersonate"/>
<mb3:serviceAction objectType="isis.sudo.ImpersonateMenu" id="impersonateWithRoles"/>
- <mb3:serviceAction objectType="isis.sudo.ImpersonateMenu" id="stopImpersonating"/>
+ <mb3:serviceAction objectType="isis.applib.ImpersonateStopMenu" id="stopImpersonating"/>
</mb3:section>
<mb3:section>
+ <mb3:serviceAction objectType="isis.applib.UserMenu" id="me"/>
<mb3:serviceAction objectType="isis.security.LogoutMenu" id="logout"/>
</mb3:section>
</mb3:menu>