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 2022/05/10 09:07:01 UTC
[isis] 01/01: ISIS-3037: rationalizes PersonaEnumPersistAll with v1
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch ISIS-3037
in repository https://gitbox.apache.org/repos/asf/isis.git
commit 7551f13d0752c15633843221b633b9b005b8f51a
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Tue May 10 10:06:34 2022 +0100
ISIS-3037: rationalizes PersonaEnumPersistAll with v1
---
.../applib/setup/PersonaEnumPersistAll.java | 7 +++---
.../fixtures/applib/personas/dom/Employee.java | 12 +++++++++++
.../fixtures/applib/personas/dom/Person.java | 14 ++++++++++++
.../applib/personas/dom/PersonRepository.java | 18 ++++++++++++++++
.../applib/personas/fixtures/Customer_persona.java | 1 +
.../applib/personas/fixtures/EmployeeBuilder.java | 25 ++++++++++++++++++++++
.../personas/fixtures/PersistAllFixtureScript.java | 18 ++++++----------
.../personas/fixtures/PersonBuilderScript.java | 25 ++++++++++++++++++++++
.../{Customer_persona.java => Person_persona.java} | 16 +++++++-------
.../personas/fixtures/ScenarioFixtureScript.java | 13 +++++------
.../applib/personas/fixtures/ScenarioTest.java | 14 ++++++++++++
11 files changed, 132 insertions(+), 31 deletions(-)
diff --git a/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/setup/PersonaEnumPersistAll.java b/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/setup/PersonaEnumPersistAll.java
index 9108ba1392..09920a86f3 100644
--- a/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/setup/PersonaEnumPersistAll.java
+++ b/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/setup/PersonaEnumPersistAll.java
@@ -32,10 +32,9 @@ import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScripts;
* @since 2.x {@index}
*/
@Programmatic
-public class PersonaEnumPersistAll<E extends Enum<E> & PersonaWithBuilderScript<T, ? extends BuilderScriptAbstract<T>>, T>
-
-extends FixtureScript
-implements FixtureScriptWithExecutionStrategy {
+public class PersonaEnumPersistAll<T, E extends Enum<E> & PersonaWithBuilderScript<T, B>, B extends BuilderScriptAbstract<T>>
+ extends FixtureScript
+ implements FixtureScriptWithExecutionStrategy {
private final Class<E> personaEnumClass;
diff --git a/testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/personas/dom/Employee.java b/testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/personas/dom/Employee.java
new file mode 100644
index 0000000000..cc79297d1f
--- /dev/null
+++ b/testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/personas/dom/Employee.java
@@ -0,0 +1,12 @@
+package org.apache.isis.testing.fixtures.applib.personas.dom;
+
+import lombok.Builder;
+import lombok.Data;
+
+@Data
+@Builder
+public class Employee {
+
+ private Person person;
+
+}
diff --git a/testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/personas/dom/Person.java b/testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/personas/dom/Person.java
new file mode 100644
index 0000000000..b540b29b76
--- /dev/null
+++ b/testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/personas/dom/Person.java
@@ -0,0 +1,14 @@
+package org.apache.isis.testing.fixtures.applib.personas.dom;
+
+import lombok.Builder;
+import lombok.Data;
+
+@Data
+@Builder
+public class Person {
+
+ private String firstName;
+ private String lastName;
+ private int age;
+
+}
diff --git a/testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/personas/dom/PersonRepository.java b/testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/personas/dom/PersonRepository.java
new file mode 100644
index 0000000000..6f298a9bc8
--- /dev/null
+++ b/testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/personas/dom/PersonRepository.java
@@ -0,0 +1,18 @@
+package org.apache.isis.testing.fixtures.applib.personas.dom;
+
+import java.util.Optional;
+
+public class PersonRepository {
+
+ public Person create(String firstName, String lastName, int age) {
+ return Person.builder()
+ .firstName(firstName)
+ .lastName(lastName)
+ .age(age)
+ .build();
+ }
+
+ public Optional<Person> findById(int id) {
+ return Optional.empty();
+ }
+}
diff --git a/testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/personas/fixtures/Customer_persona.java b/testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/personas/fixtures/Customer_persona.java
index 7ed18efc57..22259efa88 100644
--- a/testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/personas/fixtures/Customer_persona.java
+++ b/testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/personas/fixtures/Customer_persona.java
@@ -1,5 +1,6 @@
package org.apache.isis.testing.fixtures.applib.personas.fixtures;
+
import org.apache.isis.applib.services.registry.ServiceRegistry;
import org.apache.isis.testing.fixtures.applib.personas.Persona;
import org.apache.isis.testing.fixtures.applib.personas.dom.Customer;
diff --git a/testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/personas/fixtures/EmployeeBuilder.java b/testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/personas/fixtures/EmployeeBuilder.java
new file mode 100644
index 0000000000..f30a2094fe
--- /dev/null
+++ b/testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/personas/fixtures/EmployeeBuilder.java
@@ -0,0 +1,25 @@
+package org.apache.isis.testing.fixtures.applib.personas.fixtures;
+
+import javax.resource.spi.work.ExecutionContext;
+
+import org.apache.isis.testing.fixtures.applib.personas.BuilderScriptAbstract;
+import org.apache.isis.testing.fixtures.applib.personas.dom.Employee;
+import org.apache.isis.testing.fixtures.applib.personas.dom.Person;
+
+import lombok.Getter;
+
+
+public class EmployeeBuilder extends BuilderScriptAbstract<Employee> {
+
+ private Person_persona persona;
+
+ @Getter
+ private Employee object;
+
+ @Override
+ protected void execute(ExecutionContext executionContext) {
+ Person person = objectFor(persona, executionContext);
+ object = Employee.builder().person(person).build();
+ }
+
+}
diff --git a/testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/personas/fixtures/PersistAllFixtureScript.java b/testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/personas/fixtures/PersistAllFixtureScript.java
index c742cb6da2..90748e7ce4 100644
--- a/testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/personas/fixtures/PersistAllFixtureScript.java
+++ b/testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/personas/fixtures/PersistAllFixtureScript.java
@@ -1,26 +1,22 @@
package org.apache.isis.testing.fixtures.applib.personas.fixtures;
-import java.util.List;
-
-import javax.inject.Inject;
+import javax.resource.spi.work.ExecutionContext;
import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
-import org.apache.isis.testing.fixtures.applib.personas.BuilderScriptWithResult;
-import org.apache.isis.testing.fixtures.applib.personas.dom.Customer;
-import org.apache.isis.testing.fixtures.applib.personas.dom.CustomerRepository;
+import org.apache.isis.testing.fixtures.applib.personas.dom.Person;
import org.apache.isis.testing.fixtures.applib.setup.PersonaEnumPersistAll;
-import lombok.RequiredArgsConstructor;
-import lombok.val;
-
public class PersistAllFixtureScript extends FixtureScript {
@Override
protected void execute(ExecutionContext executionContext) {
- val persistAll = new PersonaEnumPersistAll<>(Customer_persona.class);
+ // create them all.
+ final PersonaEnumPersistAll<Person, Person_persona, PersonBuilderScript> persistAll = new PersonaEnumPersistAll<>(Person_persona.class);
+
+ executionContext.executeChildren(this, Person_persona.SteveSingle, Person_persona.MeghanMarriedMum);
- List<Customer> customers = executionContext.executeChildT(this, persistAll).getObjects();
+ Person person = executionContext.executeChildT(this, Person_persona.SteveSingle.builder()).getObject();
}
}
diff --git a/testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/personas/fixtures/PersonBuilderScript.java b/testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/personas/fixtures/PersonBuilderScript.java
new file mode 100644
index 0000000000..15fb4de10c
--- /dev/null
+++ b/testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/personas/fixtures/PersonBuilderScript.java
@@ -0,0 +1,25 @@
+package org.apache.isis.testing.fixtures.applib.personas.fixtures;
+
+import javax.inject.Inject;
+import javax.resource.spi.work.ExecutionContext;
+
+import org.apache.isis.testing.fixtures.applib.personas.BuilderScriptWithResult;
+import org.apache.isis.testing.fixtures.applib.personas.dom.Person;
+import org.apache.isis.testing.fixtures.applib.personas.dom.PersonRepository;
+
+import lombok.RequiredArgsConstructor;
+
+
+@RequiredArgsConstructor
+public class PersonBuilderScript extends BuilderScriptWithResult<Person> {
+
+ private final Person_persona persona;
+
+ @Override
+ protected Person buildResult(ExecutionContext ec) {
+ return customerRepository.create(persona.getFirstName(), persona.getLastName(), persona.getAge());
+ }
+
+ @Inject PersonRepository customerRepository;
+
+}
diff --git a/testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/personas/fixtures/Customer_persona.java b/testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/personas/fixtures/Person_persona.java
similarity index 52%
copy from testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/personas/fixtures/Customer_persona.java
copy to testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/personas/fixtures/Person_persona.java
index 7ed18efc57..ef4cd0f685 100644
--- a/testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/personas/fixtures/Customer_persona.java
+++ b/testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/personas/fixtures/Person_persona.java
@@ -2,16 +2,16 @@ package org.apache.isis.testing.fixtures.applib.personas.fixtures;
import org.apache.isis.applib.services.registry.ServiceRegistry;
import org.apache.isis.testing.fixtures.applib.personas.Persona;
-import org.apache.isis.testing.fixtures.applib.personas.dom.Customer;
-import org.apache.isis.testing.fixtures.applib.personas.dom.CustomerRepository;
+import org.apache.isis.testing.fixtures.applib.personas.dom.Person;
+import org.apache.isis.testing.fixtures.applib.personas.dom.PersonRepository;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
@Getter
@RequiredArgsConstructor
-public enum Customer_persona
- implements Persona<Customer, CustomerBuilderScript> {
+public enum Person_persona
+ implements Persona<Person, PersonBuilderScript> {
SteveSingle(1, "Steve", "Single", 21),
MeghanMarriedMum(2, "Meghan", "Married-Mum", 35);
@@ -22,12 +22,12 @@ public enum Customer_persona
private final int age;
@Override
- public CustomerBuilderScript builder() {
- return new CustomerBuilderScript(this);
+ public PersonBuilderScript builder() {
+ return new PersonBuilderScript(this);
}
@Override
- public Customer findUsing(ServiceRegistry serviceRegistry) {
- return serviceRegistry.lookupServiceElseFail(CustomerRepository.class).findById(id).orElseThrow();
+ public Person findUsing(ServiceRegistry serviceRegistry2) {
+ return serviceRegistry2.lookupServiceElseFail(PersonRepository.class).findById(id).orElseThrow(RuntimeException::new);
}
}
diff --git a/testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/personas/fixtures/ScenarioFixtureScript.java b/testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/personas/fixtures/ScenarioFixtureScript.java
index 48d51f2001..bbffa3a3be 100644
--- a/testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/personas/fixtures/ScenarioFixtureScript.java
+++ b/testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/personas/fixtures/ScenarioFixtureScript.java
@@ -1,13 +1,9 @@
package org.apache.isis.testing.fixtures.applib.personas.fixtures;
-import javax.inject.Inject;
+import javax.resource.spi.work.ExecutionContext;
import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
-import org.apache.isis.testing.fixtures.applib.personas.BuilderScriptWithResult;
-import org.apache.isis.testing.fixtures.applib.personas.dom.Customer;
-import org.apache.isis.testing.fixtures.applib.personas.dom.CustomerRepository;
-
-import lombok.RequiredArgsConstructor;
+import org.apache.isis.testing.fixtures.applib.personas.dom.Person;
public class ScenarioFixtureScript extends FixtureScript {
@@ -16,9 +12,10 @@ public class ScenarioFixtureScript extends FixtureScript {
protected void execute(ExecutionContext executionContext) {
// build it ..
- Customer steve = Customer_persona.SteveSingle.build(this, executionContext);
+ Person steve = Person_persona.SteveSingle.build(this, executionContext);
// ... look it up
- Customer steve2 = Customer_persona.SteveSingle.findUsing(serviceRegistry);
+ Person steve2 = Person_persona.SteveSingle.findUsing(serviceRegistry);
+
}
}
diff --git a/testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/personas/fixtures/ScenarioTest.java b/testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/personas/fixtures/ScenarioTest.java
new file mode 100644
index 0000000000..e19d13ba42
--- /dev/null
+++ b/testing/fixtures/applib/src/test/java/org/apache/isis/testing/fixtures/applib/personas/fixtures/ScenarioTest.java
@@ -0,0 +1,14 @@
+package org.apache.isis.testing.fixtures.applib.personas.fixtures;
+
+import org.apache.isis.testing.fixtures.applib.setup.PersonaEnumPersistAll;
+
+import lombok.val;
+
+
+public class ScenarioTest {
+
+
+ void setup() {
+ val persistAll = new PersonaEnumPersistAll<>(Person_persona.class);
+ }
+}