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/06/11 15:23:17 UTC
[isis-app-simpleapp] branch jdo-SNAPSHOT updated (3b63894 ->
1cf78b7)
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a change to branch jdo-SNAPSHOT
in repository https://gitbox.apache.org/repos/asf/isis-app-simpleapp.git.
from 3b63894 explicitly adds in dependency to isis-security-shiro
new 01a8d81 ISIS-2714: adds framework roles to shiro.ini
new 5178d5b removes DomainAppFixtureScriptsSpecificationProvider
new 1cf78b7 reconciling against jpa
The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
module-simple-tests/pom.xml | 7 ++++
.../integtests/tests/SimpleObject_IntegTest.java | 7 ----
.../modules/simple/dom/so/SimpleObject.java | 23 ++++++++++----
.../modules/simple/dom/so/SimpleObjects.java | 4 +--
.../simple/fixture/SimpleObjectBuilder.java | 8 ++---
.../simple/fixture/SimpleObject_persona.java | 6 ++--
pom.xml | 2 +-
...mainAppFixtureScriptsSpecificationProvider.java | 25 ---------------
.../webapp/custom/restapi/CustomController.java | 36 ++++++++++-----------
.../domainapp/webapp/quartz/job/SampleJob.java | 37 ++++++++--------------
webapp/src/main/resources/application.yml | 8 +++++
.../main/resources/config/application.properties | 2 +-
webapp/src/main/resources/log4j2-spring.xml | 4 +--
webapp/src/main/resources/menubars.layout.xml | 16 +++++-----
webapp/src/main/resources/shiro.ini | 34 +++++++++++++-------
15 files changed, 106 insertions(+), 113 deletions(-)
delete mode 100644 webapp/src/main/java/domainapp/webapp/application/fixture/DomainAppFixtureScriptsSpecificationProvider.java
[isis-app-simpleapp] 02/03: removes
DomainAppFixtureScriptsSpecificationProvider
Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch jdo-SNAPSHOT
in repository https://gitbox.apache.org/repos/asf/isis-app-simpleapp.git
commit 5178d5bec666026fb9b6bacb5b189f2ebc9b4f7d
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jun 11 14:37:45 2021 +0100
removes DomainAppFixtureScriptsSpecificationProvider
---
...mainAppFixtureScriptsSpecificationProvider.java | 25 ----------------------
webapp/src/main/resources/application.yml | 8 +++++++
webapp/src/main/resources/log4j2-spring.xml | 4 ++--
webapp/src/main/resources/menubars.layout.xml | 10 ++-------
webapp/src/main/resources/shiro.ini | 2 +-
5 files changed, 13 insertions(+), 36 deletions(-)
diff --git a/webapp/src/main/java/domainapp/webapp/application/fixture/DomainAppFixtureScriptsSpecificationProvider.java b/webapp/src/main/java/domainapp/webapp/application/fixture/DomainAppFixtureScriptsSpecificationProvider.java
deleted file mode 100644
index 44a100c..0000000
--- a/webapp/src/main/java/domainapp/webapp/application/fixture/DomainAppFixtureScriptsSpecificationProvider.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package domainapp.webapp.application.fixture;
-
-import org.springframework.stereotype.Service;
-
-import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScripts;
-import org.apache.isis.testing.fixtures.applib.fixturespec.FixtureScriptsSpecification;
-import org.apache.isis.testing.fixtures.applib.fixturespec.FixtureScriptsSpecificationProvider;
-
-import domainapp.webapp.application.fixture.scenarios.DomainAppDemo;
-
-/**
- * Specifies where to find fixtures, and other settings.
- */
-@Service
-public class DomainAppFixtureScriptsSpecificationProvider implements FixtureScriptsSpecificationProvider {
- @Override
- public FixtureScriptsSpecification getSpecification() {
- return FixtureScriptsSpecification
- .builder(DomainAppFixtureScriptsSpecificationProvider.class)
- .with(FixtureScripts.MultipleExecutionStrategy.EXECUTE)
- .withRunScriptDefault(DomainAppDemo.class)
- .withRecreate(DomainAppDemo.class)
- .build();
- }
-}
diff --git a/webapp/src/main/resources/application.yml b/webapp/src/main/resources/application.yml
index 0e6436d..1418ddb 100644
--- a/webapp/src/main/resources/application.yml
+++ b/webapp/src/main/resources/application.yml
@@ -66,6 +66,14 @@ isis:
show-chooser: true
show-drop-down-on-footer: true
+ testing:
+ fixtures:
+ fixture-scripts-specification:
+ context-class: domainapp.webapp.application.fixture.scenarios.DomainAppDemo
+ run-script-default: domainapp.webapp.application.fixture.scenarios.DomainAppDemo
+ recreate: domainapp.webapp.application.fixture.scenarios.DomainAppDemo
+ non-persisted-objects-strategy: persist
+ multiple-execution-strategy: execute
# note that properties under 'datanucleus' must use camelCase rather than kebab-case
datanucleus:
diff --git a/webapp/src/main/resources/log4j2-spring.xml b/webapp/src/main/resources/log4j2-spring.xml
index 6ac00e5..ffa0765 100644
--- a/webapp/src/main/resources/log4j2-spring.xml
+++ b/webapp/src/main/resources/log4j2-spring.xml
@@ -41,13 +41,13 @@
<!-- request scoped -->
<logger name="org.apache.isis.viewer.restfulobjects.rendering.service.acceptheader.AcceptHeaderServiceForRest" level="debug"/>
<logger name="org.apache.isis.applib.services.command.CommandContext" level="debug"/>
- <logger name="org.apache.isis.applib.services.iactn.InteractionContext" level="debug"/>
+ <logger name="org.apache.isis.applib.services.iactn.InteractionProvider" level="debug"/>
<logger name="org.apache.isis.applib.services.scratchpad.Scratchpad" level="debug"/>
<logger name="org.apache.isis.core.runtimeservices.publish.PublisherDispatchServiceDefault" level="debug"/>
<!-- transaction scoped -->
<logger name="org.apache.isis.persistence.jdo.datanucleus5.metrics.MetricsServiceDefault" level="debug"/>
- <logger name="org.apache.isis.core.runtimeservices.queryresultscache.QueryResultsCacheDefault" level="debug"/>
+ <logger name="org.apache.isis.applib.services.queryresultscache.QueryResultsCache" level="debug"/>
<logger name="org.apache.isis.core.runtime.persistence.transaction.ChangedObjectsService" level="debug"/>
<Root level="info">
diff --git a/webapp/src/main/resources/menubars.layout.xml b/webapp/src/main/resources/menubars.layout.xml
index e54b27d..f5228ea 100644
--- a/webapp/src/main/resources/menubars.layout.xml
+++ b/webapp/src/main/resources/menubars.layout.xml
@@ -18,14 +18,8 @@
<mb3:named>Prototyping</mb3:named>
<mb3:section>
<mb3:named>Fixtures</mb3:named>
- <mb3:serviceAction objectType="isis.ext.fixtures.FixtureScripts" id="runFixtureScript"/>
- <mb3:serviceAction objectType="isis.ext.fixtures.FixtureScripts" id="recreateObjectsAndReturnFirst"/>
- </mb3:section>
- <mb3:section>
- <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.testing.fixtures.FixtureScripts" id="runFixtureScript"/>
+ <mb3:serviceAction objectType="isis.testing.fixtures.FixtureScripts" id="recreateObjectsAndReturnFirst"/>
</mb3:section>
<mb3:section>
<mb3:named>Layouts</mb3:named>
diff --git a/webapp/src/main/resources/shiro.ini b/webapp/src/main/resources/shiro.ini
index 7a7974c..59e43ba 100644
--- a/webapp/src/main/resources/shiro.ini
+++ b/webapp/src/main/resources/shiro.ini
@@ -43,7 +43,7 @@ guest_role = *:SimpleObjects:findByName:*,\
admin_role = *
default_role = isis.applib,\
isis.security
-fixtures_role = isis.ext.fixtures
+fixtures_role = isis.testing.fixtures
features_role = isis.feat
metamodel_role = isis.metamodel
h2_role = isis.ext.h2Console
[isis-app-simpleapp] 01/03: ISIS-2714: adds framework roles to
shiro.ini
Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch jdo-SNAPSHOT
in repository https://gitbox.apache.org/repos/asf/isis-app-simpleapp.git
commit 01a8d81de5a664eb453a357d8a0dcca463c8a590
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Jun 3 07:01:25 2021 +0100
ISIS-2714: adds framework roles to shiro.ini
---
webapp/src/main/resources/shiro.ini | 34 +++++++++++++++++++++++-----------
1 file changed, 23 insertions(+), 11 deletions(-)
diff --git a/webapp/src/main/resources/shiro.ini b/webapp/src/main/resources/shiro.ini
index 6820eb9..7a7974c 100644
--- a/webapp/src/main/resources/shiro.ini
+++ b/webapp/src/main/resources/shiro.ini
@@ -17,25 +17,37 @@ securityManager.realms = $iniRealm
sven = pass, admin_role
-dick = pass, user_role, self-install_role
-bob = pass, user_role, self-install_role
-joe = pass, user_role, self-install_role
-guest = guest, user_role
+dick = pass, simple_role, default_role
+bob = pass, simple_role, default_role, fixtures_role
+joe = pass, simple_role, default_role
+guest = guest, guest_role, default_role
# -----------------------------------------------------------------------------
# Roles with assigned permissions
-#
+#
# Each line conforms to the format defined in the
# org.apache.shiro.realm.text.TextConfigurationRealm#setRoleDefinitions JavaDoc
# -----------------------------------------------------------------------------
[roles]
# role = perm1, perm2, perm3, ...
-# perm in format: packageName:className:memberName:r,w
-
-user_role = *:SimpleObjectMenu:*:*,\
- *:SimpleObject:*:*
-self-install_role = *:FixtureScripts:*:*
-admin_role = *
+# perm in format: logicalTypeNamespace:logicalTypeSimpleName:memberName:r,w
+
+simple_role = *:SimpleObjects:*:*,\
+ *:SimpleObject:*:*
+guest_role = *:SimpleObjects:findByName:*,\
+ *:SimpleObjects:listAll:*,\
+ *:SimpleObjects:*:r
+admin_role = *
+default_role = isis.applib,\
+ isis.security
+fixtures_role = isis.ext.fixtures
+features_role = isis.feat
+metamodel_role = isis.metamodel
+h2_role = isis.ext.h2Console
+jdo_role = isis.persistence.jdo
+swagger_role = isis.viewer.restfulobjects
+conf_role = isis.conf
+sudo_role = isis.sudo
[isis-app-simpleapp] 03/03: reconciling against jpa
Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch jdo-SNAPSHOT
in repository https://gitbox.apache.org/repos/asf/isis-app-simpleapp.git
commit 1cf78b7e2a1d2585fb6d3cbb7b9e2ef36a66f41c
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jun 11 16:16:52 2021 +0100
reconciling against jpa
---
module-simple-tests/pom.xml | 7 ++++
.../integtests/tests/SimpleObject_IntegTest.java | 7 ----
.../modules/simple/dom/so/SimpleObject.java | 23 ++++++++++----
.../modules/simple/dom/so/SimpleObjects.java | 4 +--
.../simple/fixture/SimpleObjectBuilder.java | 8 ++---
.../simple/fixture/SimpleObject_persona.java | 6 ++--
pom.xml | 2 +-
.../webapp/custom/restapi/CustomController.java | 36 ++++++++++-----------
.../domainapp/webapp/quartz/job/SampleJob.java | 37 ++++++++--------------
.../main/resources/config/application.properties | 2 +-
webapp/src/main/resources/menubars.layout.xml | 6 ++++
11 files changed, 71 insertions(+), 67 deletions(-)
diff --git a/module-simple-tests/pom.xml b/module-simple-tests/pom.xml
index e2d0378..fdab40b 100644
--- a/module-simple-tests/pom.xml
+++ b/module-simple-tests/pom.xml
@@ -64,6 +64,13 @@
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.apache.isis.mavendeps</groupId>
+ <artifactId>isis-mavendeps-jdk11</artifactId>
+ <type>pom</type>
+ <scope>test</scope>
+ </dependency>
+
</dependencies>
</project>
diff --git a/module-simple-tests/src/test/java/domainapp/modules/simple/integtests/tests/SimpleObject_IntegTest.java b/module-simple-tests/src/test/java/domainapp/modules/simple/integtests/tests/SimpleObject_IntegTest.java
index 1c2a331..bd12fc6 100644
--- a/module-simple-tests/src/test/java/domainapp/modules/simple/integtests/tests/SimpleObject_IntegTest.java
+++ b/module-simple-tests/src/test/java/domainapp/modules/simple/integtests/tests/SimpleObject_IntegTest.java
@@ -1,24 +1,17 @@
package domainapp.modules.simple.integtests.tests;
-import java.util.ArrayList;
-import java.util.List;
-
import javax.inject.Inject;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import org.springframework.context.event.EventListener;
import org.springframework.transaction.annotation.Transactional;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertThrows;
-import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.services.wrapper.DisabledException;
import org.apache.isis.applib.services.wrapper.InvalidException;
-import lombok.Getter;
-
import domainapp.modules.simple.dom.so.SimpleObject;
import domainapp.modules.simple.fixture.SimpleObject_persona;
import domainapp.modules.simple.integtests.SimpleModuleIntegTestAbstract;
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 dac0583..4c96f94 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
@@ -22,7 +22,9 @@ import org.apache.isis.applib.services.title.TitleService;
import static org.apache.isis.applib.annotation.SemanticsOf.IDEMPOTENT;
import static org.apache.isis.applib.annotation.SemanticsOf.NON_IDEMPOTENT_ARE_YOU_SURE;
+import lombok.AccessLevel;
import lombok.Getter;
+import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import lombok.val;
@@ -30,30 +32,39 @@ import lombok.val;
import domainapp.modules.simple.types.Name;
import domainapp.modules.simple.types.Notes;
-@javax.jdo.annotations.PersistenceCapable(identityType=IdentityType.DATASTORE, schema = "SIMPLE")
-@javax.jdo.annotations.DatastoreIdentity(strategy=IdGeneratorStrategy.IDENTITY, column="id")
+
+@javax.jdo.annotations.PersistenceCapable(
+ schema = "SIMPLE",
+ identityType=IdentityType.DATASTORE)
+@javax.jdo.annotations.Unique(
+ name = "SimpleObject_name_UNQ", members = {"name"}
+)
@javax.jdo.annotations.Queries({
@javax.jdo.annotations.Query(
- name = "findByName",
+ name = SimpleObject.NAMED_QUERY__FIND_BY_NAME_LIKE,
value = "SELECT " +
"FROM domainapp.modules.simple.dom.so.SimpleObject " +
"WHERE name.indexOf(:name) >= 0"
),
@javax.jdo.annotations.Query(
- name = "findByNameExact",
+ name = SimpleObject.NAMED_QUERY__FIND_BY_NAME_EXACT,
value = "SELECT " +
"FROM domainapp.modules.simple.dom.so.SimpleObject " +
"WHERE name == :name"
)
})
+@javax.jdo.annotations.DatastoreIdentity(strategy=IdGeneratorStrategy.IDENTITY, column="id")
@javax.jdo.annotations.Version(strategy= VersionStrategy.DATE_TIME, column="version")
-@javax.jdo.annotations.Unique(name="SimpleObject_name_UNQ", members = {"name"})
@DomainObject(objectType = "simple.SimpleObject")
@DomainObjectLayout()
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
@XmlJavaTypeAdapter(PersistentEntityAdapter.class)
@ToString(onlyExplicitlyIncluded = true)
public class SimpleObject implements Comparable<SimpleObject> {
+ static final String NAMED_QUERY__FIND_BY_NAME_LIKE = "SimpleObject.findByNameLike";
+ static final String NAMED_QUERY__FIND_BY_NAME_EXACT = "SimpleObject.findByNameExact";
+
public static SimpleObject withName(String name) {
val simpleObject = new SimpleObject();
simpleObject.setName(name);
@@ -64,8 +75,6 @@ public class SimpleObject implements Comparable<SimpleObject> {
@Inject TitleService titleService;
@Inject MessageService messageService;
- private SimpleObject() {
- }
public String title() {
return "Object: " + getName();
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 05e16bb..25662d7 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
@@ -44,7 +44,7 @@ public class SimpleObjects {
@Name final String name
) {
return repositoryService.allMatches(
- Query.named(SimpleObject.class, "findByName")
+ Query.named(SimpleObject.class, SimpleObject.NAMED_QUERY__FIND_BY_NAME_LIKE)
.withParameter("name", name));
}
@@ -52,7 +52,7 @@ public class SimpleObjects {
@Programmatic
public SimpleObject findByNameExact(final String name) {
return repositoryService.firstMatch(
- Query.named(SimpleObject.class, "findByNameExact")
+ Query.named(SimpleObject.class, SimpleObject.NAMED_QUERY__FIND_BY_NAME_EXACT)
.withParameter("name", name))
.orElse(null);
}
diff --git a/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObjectBuilder.java b/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObjectBuilder.java
index c517334..80223be 100644
--- a/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObjectBuilder.java
+++ b/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObjectBuilder.java
@@ -2,7 +2,7 @@ package domainapp.modules.simple.fixture;
import javax.inject.Inject;
-import org.apache.isis.testing.fixtures.applib.fixturescripts.BuilderScriptWithResult;
+import org.apache.isis.testing.fixtures.applib.personas.BuilderScriptWithResult;
import domainapp.modules.simple.dom.so.SimpleObject;
import domainapp.modules.simple.dom.so.SimpleObjects;
@@ -18,12 +18,12 @@ public class SimpleObjectBuilder extends BuilderScriptWithResult<SimpleObject> {
@Override
protected SimpleObject buildResult(final ExecutionContext ec) {
-
+
checkParam("name", ec, String.class);
-
+
return wrap(simpleObjects).create(name);
}
-
+
// -- DEPENDENCIES
@Inject SimpleObjects simpleObjects;
diff --git a/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObject_persona.java b/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObject_persona.java
index 36e0c71..41a5aec 100644
--- a/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObject_persona.java
+++ b/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObject_persona.java
@@ -1,8 +1,8 @@
package domainapp.modules.simple.fixture;
import org.apache.isis.applib.services.registry.ServiceRegistry;
-import org.apache.isis.testing.fixtures.applib.api.PersonaWithBuilderScript;
-import org.apache.isis.testing.fixtures.applib.api.PersonaWithFinder;
+import org.apache.isis.testing.fixtures.applib.personas.PersonaWithBuilderScript;
+import org.apache.isis.testing.fixtures.applib.personas.PersonaWithFinder;
import org.apache.isis.testing.fixtures.applib.setup.PersonaEnumPersistAll;
import domainapp.modules.simple.dom.so.SimpleObject;
@@ -10,7 +10,7 @@ import domainapp.modules.simple.dom.so.SimpleObjects;
import lombok.AllArgsConstructor;
@AllArgsConstructor
-public enum SimpleObject_persona
+public enum SimpleObject_persona
implements PersonaWithBuilderScript<SimpleObjectBuilder>, PersonaWithFinder<SimpleObject> {
FOO("Foo"),
diff --git a/pom.xml b/pom.xml
index fb3a1f7..e50f299 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
<parent>
<groupId>org.apache.isis.app</groupId>
<artifactId>isis-app-starter-parent</artifactId>
- <version>2.0.0-M5.20210601-0553-daa4d8e1</version>
+ <version>2.0.0-SNAPSHOT</version>
<relativePath/>
</parent>
diff --git a/webapp/src/main/java/domainapp/webapp/custom/restapi/CustomController.java b/webapp/src/main/java/domainapp/webapp/custom/restapi/CustomController.java
index abd4e01..33c2ee5 100644
--- a/webapp/src/main/java/domainapp/webapp/custom/restapi/CustomController.java
+++ b/webapp/src/main/java/domainapp/webapp/custom/restapi/CustomController.java
@@ -2,17 +2,18 @@ package domainapp.webapp.custom.restapi;
import java.util.Collections;
import java.util.List;
+import java.util.Optional;
import java.util.concurrent.Callable;
+import javax.inject.Inject;
+
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
+import org.apache.isis.applib.services.iactnlayer.InteractionContext;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.applib.services.user.UserMemento;
import org.apache.isis.applib.services.xactn.TransactionalProcessor;
-import org.apache.isis.commons.functional.Result;
-import org.apache.isis.core.interaction.session.InteractionFactory;
-import org.apache.isis.core.security.authentication.Authentication;
-import org.apache.isis.core.security.authentication.standard.SimpleAuthentication;
import lombok.RequiredArgsConstructor;
@@ -20,30 +21,27 @@ import domainapp.modules.simple.dom.so.SimpleObject;
import domainapp.modules.simple.dom.so.SimpleObjects;
@RestController
-@RequiredArgsConstructor
+@RequiredArgsConstructor(onConstructor_ = {@Inject})
class CustomController {
- private final InteractionFactory interactionFactory;
+ private final InteractionService interactionService;
private final TransactionalProcessor transactionalProcessor;
private final SimpleObjects simpleObjects;
@GetMapping("/custom/simpleObjects")
List<SimpleObject> all() {
- return callAuthenticated(newAuthentication(), () -> simpleObjects.listAll())
- .optionalElseFail() // re-throws exception that has occurred, if any
- .orElse(Collections.emptyList()); // handles null case, if required
- }
-
- private SimpleAuthentication newAuthentication() {
- return SimpleAuthentication.validOf(UserMemento.ofName("sven"));
+ return call("sven", simpleObjects::listAll)
+ .orElse(Collections.<SimpleObject>emptyList());
}
- private <T> Result<T> callAuthenticated(
- final Authentication authentication,
- final Callable<T> task) {
+ private <T> Optional<T> call(
+ final String username,
+ final Callable<T> callable) {
- return interactionFactory.callAuthenticated(
- authentication,
- () -> transactionalProcessor.callWithinCurrentTransactionElseCreateNew(task));
+ return interactionService.call(
+ InteractionContext.ofUserWithSystemDefaults(UserMemento.ofName(username)),
+ () -> transactionalProcessor.callWithinCurrentTransactionElseCreateNew(callable))
+ .optionalElseFail(); // re-throws exception that has occurred, if any
}
+
}
diff --git a/webapp/src/main/java/domainapp/webapp/quartz/job/SampleJob.java b/webapp/src/main/java/domainapp/webapp/quartz/job/SampleJob.java
index 41b62e0..d112ae9 100644
--- a/webapp/src/main/java/domainapp/webapp/quartz/job/SampleJob.java
+++ b/webapp/src/main/java/domainapp/webapp/quartz/job/SampleJob.java
@@ -2,6 +2,7 @@ package domainapp.webapp.quartz.job;
import java.util.Collections;
import java.util.List;
+import java.util.Optional;
import java.util.concurrent.Callable;
import javax.inject.Inject;
@@ -9,31 +10,25 @@ import javax.inject.Inject;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
+import org.apache.isis.applib.services.iactnlayer.InteractionContext;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
import org.apache.isis.applib.services.user.UserMemento;
import org.apache.isis.applib.services.xactn.TransactionalProcessor;
-import org.apache.isis.commons.functional.Result;
-import org.apache.isis.core.interaction.session.InteractionFactory;
-import org.apache.isis.core.security.authentication.Authentication;
-import org.apache.isis.core.security.authentication.standard.SimpleAuthentication;
import lombok.RequiredArgsConstructor;
-
import lombok.extern.log4j.Log4j2;
-import lombok.extern.slf4j.Slf4j;
-
import domainapp.modules.simple.dom.so.SimpleObject;
import domainapp.modules.simple.dom.so.SimpleObjects;
@Component
@RequiredArgsConstructor(onConstructor_ = {@Inject})
-@Slf4j
+@Log4j2
public class SampleJob implements Job {
- private final InteractionFactory interactionFactory;
+ private final InteractionService interactionService;
private final TransactionalProcessor transactionalProcessor;
private final SimpleObjects simpleObjects;
@@ -44,21 +39,17 @@ public class SampleJob implements Job {
}
List<SimpleObject> all() {
- return callAuthenticated(newAuthentication(), () -> simpleObjects.listAll())
- .optionalElseFail() // re-throws exception that has occurred, if any
- .orElse(Collections.emptyList()); // handles null case, if required
- }
-
- private SimpleAuthentication newAuthentication() {
- return SimpleAuthentication.validOf(UserMemento.ofName("sven"));
+ return call("sven", simpleObjects::listAll)
+ .orElse(Collections.<SimpleObject>emptyList());
}
- private <T> Result<T> callAuthenticated(
- final Authentication authentication,
- final Callable<T> task) {
+ private <T> Optional<T> call(
+ final String username,
+ final Callable<T> callable) {
- return interactionFactory.callAuthenticated(
- authentication,
- () -> transactionalProcessor.callWithinCurrentTransactionElseCreateNew(task));
+ return interactionService.call(
+ InteractionContext.ofUserWithSystemDefaults(UserMemento.ofName(username)),
+ () -> transactionalProcessor.callWithinCurrentTransactionElseCreateNew(callable))
+ .optionalElseFail(); // re-throws exception that has occurred, if any
}
}
diff --git a/webapp/src/main/resources/config/application.properties b/webapp/src/main/resources/config/application.properties
index 36b43d9..3b63c10 100644
--- a/webapp/src/main/resources/config/application.properties
+++ b/webapp/src/main/resources/config/application.properties
@@ -10,7 +10,7 @@
spring.flyway.enabled=false
-spring.datasource.platform=h2
+spring.sql.init.platform=h2
spring.datasource.url=jdbc:h2:mem:simple
spring.datasource.driver-class-name=org.h2.Driver
diff --git a/webapp/src/main/resources/menubars.layout.xml b/webapp/src/main/resources/menubars.layout.xml
index f5228ea..350a532 100644
--- a/webapp/src/main/resources/menubars.layout.xml
+++ b/webapp/src/main/resources/menubars.layout.xml
@@ -64,6 +64,12 @@
<mb3:serviceAction objectType="isis.conf.ConfigurationMenu" id="configuration"/>
</mb3:section>
<mb3:section>
+ <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:section>
+ <mb3:section>
<mb3:serviceAction objectType="isis.security.LogoutMenu" id="logout"/>
</mb3:section>
</mb3:menu>