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/10/01 08:01:25 UTC

[isis] branch ISIS-3223 created (now d8e40af9a1)

This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a change to branch ISIS-3223
in repository https://gitbox.apache.org/repos/asf/isis.git


      at d8e40af9a1 ISIS-3223: ISIS-3223: improves enhance.sh

This branch includes the following new commits:

     new c9dd754b1c ISIS-3223: adds integ test (currently failing)
     new d8e40af9a1 ISIS-3223: ISIS-3223: improves enhance.sh

The 2 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.



[isis] 01/02: ISIS-3223: adds integ test (currently failing)

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch ISIS-3223
in repository https://gitbox.apache.org/repos/asf/isis.git

commit c9dd754b1c9b8218513ddbee586addc77f010662
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Sep 28 06:20:29 2022 +0100

    ISIS-3223: adds integ test (currently failing)
---
 enhance.sh                                         | 40 +++++----
 regressiontests/pom.xml                            |  1 +
 .../stable-core-wrapperfactory/log4j2-test.xml     | 78 ++++++++++++++++++
 .../logging-dn-enhance.properties                  | 48 +++++++++++
 regressiontests/stable-core-wrapperfactory/pom.xml | 96 ++++++++++++++++++++++
 .../src/main/java/include.txt                      |  1 +
 .../CoreWrapperFactory_IntegTestAbstract.java      | 59 +++++++++++++
 .../integtests/WrapperFactory_async_IntegTest.java | 90 ++++++++++++++++++++
 .../wrapperfactory/integtests/model/Counter.java   | 76 +++++++++++++++++
 .../integtests/model/CounterRepository.java        | 54 ++++++++++++
 .../integtests/model/Counter_bumpUsingMixin.java   | 41 +++++++++
 .../integtests/model/TestDomainModel.java          | 48 +++++++++++
 12 files changed, 616 insertions(+), 16 deletions(-)

diff --git a/enhance.sh b/enhance.sh
index dfff552b71..ec27edd2e9 100644
--- a/enhance.sh
+++ b/enhance.sh
@@ -20,16 +20,17 @@
 #
 
 usage() {
-  echo "$(basename $0): [-a] [-c] [-e] [-o] [-m] [-s] [-d] [-t] [-u]"         >&2
-  echo "  -a : audit trail (extensions/security)"                             >&2
-  echo "  -c : command log (extensions/core)"                                 >&2
-  echo "  -e : execution log (extensions/core)"                               >&2
-  echo "  -o : execution outbox (extensions/core)"                            >&2
-  echo "  -m : secman (extensions/security)"                                  >&2
-  echo "  -s : session log (extensions/security)"                             >&2
-  echo "  -d : demo (examples/demo/domain)"                                   >&2
-  echo "  -t : JDO regression tests (regressiontests/stable-persistence-jdo)" >&2
+  echo "$(basename $0): [-a] [-c] [-e] [-o] [-m] [-s] [-d] [-t] [-u] [-w]"     >&2
+  echo "  -a : audit trail (extensions/security)"                              >&2
+  echo "  -c : command log (extensions/core)"                                  >&2
+  echo "  -e : execution log (extensions/core)"                                >&2
+  echo "  -o : execution outbox (extensions/core)"                             >&2
+  echo "  -m : secman (extensions/security)"                                   >&2
+  echo "  -s : session log (extensions/security)"                              >&2
+  echo "  -d : demo (examples/demo/domain)"                                    >&2
+  echo "  -t : JDO regression tests (regressiontests/stable-persistence-jdo)"  >&2
   echo "  -u : JDO regression tests (regressiontests/stable-cmdexecauditsess)" >&2
+  echo "  -w : JDO regression tests (regressiontests/core-wrapperfactory)"     >&2
 }
 
 
@@ -39,15 +40,16 @@ COMMANDLOG=""
 DEMO=""
 EXECUTIONLOG=""
 EXECUTIONOUTBOX=""
-REGRESSIONTESTS=""
-REGRESSIONTESTS2=""
+REGRESSIONTESTS_PERSISTENCE_JDO=""
+REGRESSIONTESTS_CMDEXECAUDITSESS=""
+REGRESSIONTESTS_CORE_WRAPPERFACTORY=""
 SECMAN=""
 SESSIONLOG=""
 
 PATHS=()
 ALL_IF_REQUIRED=""
 
-while getopts ":acdeomshtu" arg; do
+while getopts ":acdeomshtuw" arg; do
   case $arg in
     h)
       usage
@@ -82,15 +84,20 @@ while getopts ":acdeomshtu" arg; do
       PATHS+=( "examples/demo/domain" )
       ;;
     t)
-      REGRESSIONTESTS="enhance"
+      REGRESSIONTESTS_PERSISTENCE_JDO="enhance"
       PATHS+=( "regressiontests/stable-persistence-jdo" )
       ALL_IF_REQUIRED="-Dmodule-all"
       ;;
     u)
-      REGRESSIONTESTS2="enhance"
+      REGRESSIONTESTS_CMDEXECAUDITSESS="enhance"
       PATHS+=( "regressiontests/stable-cmdexecauditsess/persistence-jdo" )
       ALL_IF_REQUIRED="-Dmodule-all"
       ;;
+    w)
+      REGRESSIONTESTS_CORE_WRAPPERFACTORY="enhance"
+      PATHS+=( "regressiontests/stable-core-wrapperfactory" )
+      ALL_IF_REQUIRED="-Dmodule-all"
+      ;;
     *)
       usage
       exit 1
@@ -106,8 +113,9 @@ echo "EXECUTIONOUTBOX  : $EXECUTIONOUTBOX"
 echo "SECMAN           : $SECMAN"
 echo "SESSIONLOG       : $SESSIONLOG"
 echo "DEMO             : $DEMO"
-echo "REGRESSIONTESTS  : $REGRESSIONTESTS"
-echo "REGRESSIONTESTS2 : $REGRESSIONTESTS2"
+echo "REGRESSIONTESTS_PERSISTENCE_JDO     : $REGRESSIONTESTS_PERSISTENCE_JDO"
+echo "REGRESSIONTESTS_CMDEXECAUDITSESS    : $REGRESSIONTESTS_CMDEXECAUDITSESS"
+echo "REGRESSIONTESTS_CORE_WRAPPERFACTORY : REGRESSIONTESTS_CORE_WRAPPERFACTORY"
 
 
 printf -v PATHS_SPLATTED '%s,' "${PATHS[@]}"
diff --git a/regressiontests/pom.xml b/regressiontests/pom.xml
index 14b068243b..e685247d64 100644
--- a/regressiontests/pom.xml
+++ b/regressiontests/pom.xml
@@ -292,6 +292,7 @@
 		<module>stable</module>
 		<module>stable-bootstrapping</module>
 		<module>stable-config</module>
+		<module>stable-core-wrapperfactory</module>
 		<module>stable-cucumber</module>
 		<module>stable-domainmodel</module>
 		<module>stable-eventhandling</module>
diff --git a/regressiontests/stable-core-wrapperfactory/log4j2-test.xml b/regressiontests/stable-core-wrapperfactory/log4j2-test.xml
new file mode 100644
index 0000000000..0ed7986e24
--- /dev/null
+++ b/regressiontests/stable-core-wrapperfactory/log4j2-test.xml
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<Configuration status="WARN">
+	<Properties>
+		<Property name="PID">????</Property>
+		<Property name="LOG_EXCEPTION_CONVERSION_WORD">%xwEx</Property>
+		<Property name="LOG_LEVEL_PATTERN">%5p</Property>
+		<Property name="LOG_DATEFORMAT_PATTERN">yyyy-MM-dd HH:mm:ss.SSS</Property>
+		<Property name="CONSOLE_LOG_PATTERN">%clr{%d{${LOG_DATEFORMAT_PATTERN}}}{faint} %clr{${LOG_LEVEL_PATTERN}} %clr{${sys:PID}}{magenta} %clr{---}{faint} %clr{[%15.15t]}{faint} %clr{%-40.40c{1.}}{cyan} %clr{:}{faint} %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD}</Property>
+		<Property name="FILE_LOG_PATTERN">%d{${LOG_DATEFORMAT_PATTERN}} ${LOG_LEVEL_PATTERN} ${sys:PID} --- [%t] %-40.40c{1.} : %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD}</Property>
+	</Properties>
+	<Appenders>
+		<Console name="Console" target="SYSTEM_OUT" follow="true">
+			<PatternLayout pattern="${sys:CONSOLE_LOG_PATTERN}" />
+		</Console>
+	</Appenders>
+	<Loggers>
+		<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" />
+		<logger name="org.apache.sshd.common.util.SecurityUtils" level="warn"/>
+		<Logger name="org.apache.tomcat.util.net.NioSelectorPool" level="warn" />
+		<Logger name="org.eclipse.jetty.util.component.AbstractLifeCycle" level="error" />
+		<Logger name="org.hibernate.validator.internal.util.Version" level="warn" />
+		<logger name="org.springframework.boot.actuate.endpoint.jmx" level="warn"/>
+		
+		<logger name="org.apache.directory" level="warn"/>
+		<logger name="org.apache.directory.api.ldap.model.entry.Value" level="off"/>
+		
+		<logger name="DataNucleus.Persistence" level="info"/>
+		<logger name="DataNucleus.Transaction" level="info"/>
+		<logger name="DataNucleus.Datastore.Schema" level="info"/>
+		<logger name="DataNucleus.Datastore.Native" level="info"/>
+		
+		<Root level="info">
+			<AppenderRef ref="Console" />
+		</Root>
+	</Loggers>
+</Configuration>
+
+<!-- # DataNucleus Logging Categories -->
+<!-- DataNucleus.Persistence - All messages relating to the persistence process -->
+<!-- DataNucleus.Transaction - All messages relating to transactions -->
+<!-- DataNucleus.Connection - All messages relating to Connections. -->
+<!-- DataNucleus.Query - All messages relating to queries -->
+<!-- DataNucleus.Cache - All messages relating to the DataNucleus Cache -->
+<!-- DataNucleus.MetaData - All messages relating to MetaData -->
+<!-- DataNucleus.Datastore - All general datastore messages -->
+<!-- DataNucleus.Datastore.Schema - All schema related datastore log messages -->
+<!-- DataNucleus.Datastore.Persist - All datastore persistence messages -->
+<!-- DataNucleus.Datastore.Retrieve - All datastore retrieval messages -->
+<!-- DataNucleus.Datastore.Native - Log of all 'native' statements sent to the datastore -->
+<!-- DataNucleus.General - All general operational messages -->
+<!-- DataNucleus.Lifecycle - All messages relating to object lifecycle changes -->
+<!-- DataNucleus.ValueGeneration - All messages relating to value generation -->
+<!-- DataNucleus.Enhancer - All messages from the DataNucleus Enhancer. -->
+<!-- DataNucleus.SchemaTool - All messages from DataNucleus SchemaTool -->
+<!-- DataNucleus.JDO - All messages general to JDO -->
+<!-- DataNucleus.JPA - All messages general to JPA -->
+<!-- DataNucleus.JCA - All messages relating to Connector JCA. -->
+<!-- DataNucleus.IDE - Messages from the DataNucleus IDE. -->
\ No newline at end of file
diff --git a/regressiontests/stable-core-wrapperfactory/logging-dn-enhance.properties b/regressiontests/stable-core-wrapperfactory/logging-dn-enhance.properties
new file mode 100644
index 0000000000..515c2a2966
--- /dev/null
+++ b/regressiontests/stable-core-wrapperfactory/logging-dn-enhance.properties
@@ -0,0 +1,48 @@
+#
+#  Licensed to the Apache Software Foundation (ASF) under one
+#  or more contributor license agreements.  See the NOTICE file
+#  distributed with this work for additional information
+#  regarding copyright ownership.  The ASF licenses this file
+#  to you under the Apache License, Version 2.0 (the
+#  "License"); you may not use this file except in compliance
+#  with the License.  You may obtain a copy of the License at
+#
+#        http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing,
+#  software distributed under the License is distributed on an
+#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+#  KIND, either express or implied.  See the License for the
+#  specific language governing permissions and limitations
+#  under the License.
+#
+
+log4j.appender.A1=org.apache.log4j.FileAppender
+log4j.appender.A1.File=datanucleus.log
+log4j.appender.A1.layout=org.apache.log4j.PatternLayout
+log4j.appender.A1.layout.ConversionPattern=%d{HH:mm:ss,SSS} (%t) %-5p [%c] - %m%n
+
+
+# overriding all those below... 
+log4j.category.DataNucleus=ERROR
+
+log4j.category.DataNucleus.Persistence=INFO, A1
+log4j.category.DataNucleus.Transaction=INFO, A1
+log4j.category.DataNucleus.Connection=INFO, A1
+log4j.category.DataNucleus.Query=INFO, A1
+log4j.category.DataNucleus.Cache=INFO, A1
+log4j.category.DataNucleus.MetaData=INFO, A1
+log4j.category.DataNucleus.Datastore=INFO, A1
+log4j.category.DataNucleus.Datastore.Schema=INFO, A1
+log4j.category.DataNucleus.Datastore.Persist=INFO, A1
+log4j.category.DataNucleus.Datastore.Retrieve=INFO, A1
+#Log of all 'native' statements sent to the datastore
+log4j.category.DataNucleus.Datastore.Native=INFO, A1 
+log4j.category.DataNucleus.General=INFO, A1
+#All messages relating to object lifecycle changes
+log4j.category.DataNucleus.Lifecycle=INFO, A1
+log4j.category.DataNucleus.ValueGeneration=INFO, A1
+log4j.category.DataNucleus.Enhancer=INFO, A1
+log4j.category.DataNucleus.SchemaTool=INFO, A1
+log4j.category.DataNucleus.JDO=INFO, A1
+ 
\ No newline at end of file
diff --git a/regressiontests/stable-core-wrapperfactory/pom.xml b/regressiontests/stable-core-wrapperfactory/pom.xml
new file mode 100644
index 0000000000..c0b9bceb25
--- /dev/null
+++ b/regressiontests/stable-core-wrapperfactory/pom.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor
+	license agreements. See the NOTICE file distributed with this work for additional
+	information regarding copyright ownership. The ASF licenses this file to
+	you under the Apache License, Version 2.0 (the "License"); you may not use
+	this file except in compliance with the License. You may obtain a copy of
+	the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required
+	by applicable law or agreed to in writing, software distributed under the
+	License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+	OF ANY KIND, either express or implied. See the License for the specific
+	language governing permissions and limitations under the License. -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.isis.regressiontests</groupId>
+        <artifactId>isis-regressiontests</artifactId>
+        <version>2.0.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>isis-regressiontests-core-wrapperfactory</artifactId>
+    <name>Apache Isis - Regression Tests (stable) - Core WrapperFactory</name>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.apache.isis.extensions</groupId>
+                <artifactId>isis-extensions</artifactId>
+                <version>2.0.0-SNAPSHOT</version>
+                <scope>import</scope>
+                <type>pom</type>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.isis.testing</groupId>
+                <artifactId>isis-testing</artifactId>
+                <version>2.0.0-SNAPSHOT</version>
+                <scope>import</scope>
+                <type>pom</type>
+            </dependency>
+
+            <dependency>
+                <groupId>org.apache.isis.core</groupId>
+                <artifactId>isis-core</artifactId>
+                <version>2.0.0-SNAPSHOT</version>
+                <scope>import</scope>
+                <type>pom</type>
+            </dependency>
+
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+
+        <dependency>
+            <groupId>org.apache.isis.core</groupId>
+            <artifactId>isis-core-config</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.isis.core</groupId>
+            <artifactId>isis-applib</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>jakarta.xml.ws</groupId>
+            <artifactId>jakarta.xml.ws-api</artifactId>
+            <scope>provided</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.isis.testing</groupId>
+            <artifactId>isis-testing-integtestsupport-applib</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.isis.persistence</groupId>
+            <artifactId>isis-persistence-jdo-datanucleus</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.isis.testing</groupId>
+            <artifactId>isis-testing-fixtures-applib</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>com.github.gavlyukovskiy</groupId>
+            <artifactId>p6spy-spring-boot-starter</artifactId>
+            <version>1.8.0</version>
+            <scope>test</scope>
+        </dependency>
+
+    </dependencies>
+</project>
diff --git a/regressiontests/stable-core-wrapperfactory/src/main/java/include.txt b/regressiontests/stable-core-wrapperfactory/src/main/java/include.txt
new file mode 100644
index 0000000000..4f9c4e05b9
--- /dev/null
+++ b/regressiontests/stable-core-wrapperfactory/src/main/java/include.txt
@@ -0,0 +1 @@
+existence of the src/main/java folder, even if empty, suppresses build [WARNING] JAR will be empty - no content was marked for inclusion
\ No newline at end of file
diff --git a/regressiontests/stable-core-wrapperfactory/src/test/java/org/apache/isis/regressiontests/core/wrapperfactory/integtests/CoreWrapperFactory_IntegTestAbstract.java b/regressiontests/stable-core-wrapperfactory/src/test/java/org/apache/isis/regressiontests/core/wrapperfactory/integtests/CoreWrapperFactory_IntegTestAbstract.java
new file mode 100644
index 0000000000..13a02b0b64
--- /dev/null
+++ b/regressiontests/stable-core-wrapperfactory/src/test/java/org/apache/isis/regressiontests/core/wrapperfactory/integtests/CoreWrapperFactory_IntegTestAbstract.java
@@ -0,0 +1,59 @@
+package org.apache.isis.regressiontests.core.wrapperfactory.integtests;
+
+import javax.inject.Inject;
+
+import org.apache.isis.core.config.presets.IsisPresets;
+import org.apache.isis.core.runtimeservices.IsisModuleCoreRuntimeServices;
+import org.apache.isis.persistence.jdo.datanucleus.IsisModulePersistenceJdoDatanucleus;
+import org.apache.isis.regressiontests.core.wrapperfactory.integtests.model.Counter;
+import org.apache.isis.regressiontests.core.wrapperfactory.integtests.model.CounterRepository;
+import org.apache.isis.regressiontests.core.wrapperfactory.integtests.model.TestDomainModel;
+import org.apache.isis.security.bypass.IsisModuleSecurityBypass;
+import org.apache.isis.testing.fixtures.applib.IsisIntegrationTestAbstractWithFixtures;
+import org.apache.isis.testing.fixtures.applib.IsisModuleTestingFixturesApplib;
+import org.junit.jupiter.api.BeforeAll;
+import org.springframework.boot.SpringBootConfiguration;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.context.annotation.Import;
+import org.springframework.context.annotation.PropertySource;
+import org.springframework.context.annotation.PropertySources;
+import org.springframework.test.context.ActiveProfiles;
+
+@SpringBootTest(
+        classes = CoreWrapperFactory_IntegTestAbstract.AppManifest.class
+)
+@ActiveProfiles("test")
+public abstract class CoreWrapperFactory_IntegTestAbstract extends IsisIntegrationTestAbstractWithFixtures {
+
+    @SpringBootConfiguration
+    @EnableAutoConfiguration
+    @Import({
+            IsisModuleCoreRuntimeServices.class,
+            IsisModuleSecurityBypass.class,
+            IsisModulePersistenceJdoDatanucleus.class,
+            IsisModuleTestingFixturesApplib.class,
+
+            TestDomainModel.class,
+    })
+    @PropertySources({
+            @PropertySource(IsisPresets.H2InMemory_withUniqueSchema),
+            @PropertySource(IsisPresets.DatanucleusAutocreateNoValidate),
+            @PropertySource(IsisPresets.DatanucleusEagerlyCreateTables),
+            @PropertySource(IsisPresets.UseLog4j2Test),
+    })
+    public static class AppManifest {
+    }
+
+    @BeforeAll
+    static void beforeAll() {
+        IsisPresets.forcePrototyping();
+    }
+
+    protected Counter newCounter(String name) {
+        return Counter.builder().name(name).build();
+    }
+
+
+    @Inject protected CounterRepository counterRepository;
+}
diff --git a/regressiontests/stable-core-wrapperfactory/src/test/java/org/apache/isis/regressiontests/core/wrapperfactory/integtests/WrapperFactory_async_IntegTest.java b/regressiontests/stable-core-wrapperfactory/src/test/java/org/apache/isis/regressiontests/core/wrapperfactory/integtests/WrapperFactory_async_IntegTest.java
new file mode 100644
index 0000000000..5cf313bd6a
--- /dev/null
+++ b/regressiontests/stable-core-wrapperfactory/src/test/java/org/apache/isis/regressiontests/core/wrapperfactory/integtests/WrapperFactory_async_IntegTest.java
@@ -0,0 +1,90 @@
+package org.apache.isis.regressiontests.core.wrapperfactory.integtests;
+
+import lombok.SneakyThrows;
+import lombok.val;
+
+import java.util.List;
+
+import javax.inject.Inject;
+
+import org.apache.isis.applib.services.bookmark.Bookmark;
+import org.apache.isis.applib.services.bookmark.BookmarkService;
+import org.apache.isis.applib.services.wrapper.WrapperFactory;
+import org.apache.isis.applib.services.wrapper.control.AsyncControl;
+import org.apache.isis.applib.services.xactn.TransactionService;
+import org.apache.isis.regressiontests.core.wrapperfactory.integtests.model.Counter;
+import org.apache.isis.regressiontests.core.wrapperfactory.integtests.model.Counter_bumpUsingMixin;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.springframework.transaction.annotation.Propagation;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+/**
+ * Run "sh enhance.sh -w" first, to enhance the test JDO entities.
+ */
+class WrapperFactory_async_IntegTest extends CoreWrapperFactory_IntegTestAbstract {
+
+    @Inject WrapperFactory wrapperFactory;
+    @Inject TransactionService transactionService;
+    @Inject BookmarkService bookmarkService;
+
+    Bookmark bookmark;
+
+    @BeforeEach
+    void setup_counter() {
+
+        transactionService.runTransactional(Propagation.REQUIRES_NEW, () -> {
+            counterRepository.persist(newCounter("fred"));
+            List<Counter> counters = counterRepository.find();
+            assertThat(counters).hasSize(1);
+
+            bookmark = bookmarkService.bookmarkForElseFail(counters.get(0));
+        }).ifFailureFail();
+
+        // given
+        assertThat(bookmark).isNotNull();
+
+        val counter = bookmarkService.lookup(bookmark, Counter.class).orElseThrow();
+        assertThat(counter.getNum()).isNull();
+    }
+
+    @SneakyThrows
+    @Test
+    void async_using_default_executor_service() {
+
+        // when
+        transactionService.runTransactional(Propagation.REQUIRES_NEW, () -> {
+            val counter = bookmarkService.lookup(bookmark, Counter.class).orElseThrow();
+
+            wrapperFactory.asyncWrap(counter, AsyncControl.returning(Counter.class)).bumpUsingDeclaredAction();
+
+            Thread.sleep(1_000);// horrid, but let's just wait 1 sec to allow executor to complete before continuing
+        }).ifFailureFail();
+
+        // then
+        transactionService.runTransactional(Propagation.REQUIRES_NEW, () -> {
+            val counter = bookmarkService.lookup(bookmark, Counter.class).orElseThrow();
+            assertThat(counter.getNum()).isEqualTo(1L);
+        }).ifFailureFail();
+
+        // when
+        transactionService.runTransactional(Propagation.REQUIRES_NEW, () -> {
+            val counter = bookmarkService.lookup(bookmark, Counter.class).orElseThrow();
+            assertThat(counter.getNum()).isEqualTo(1L);
+
+            // when
+            wrapperFactory.asyncWrapMixin(Counter_bumpUsingMixin.class, counter, AsyncControl.returning(Counter.class)).act();
+
+            Thread.sleep(1_000);// horrid, but let's just wait 1 sec to allow executor to complete before continuing
+        }).ifFailureFail();
+
+        // then
+        transactionService.runTransactional(Propagation.REQUIRES_NEW, () -> {
+            val counter = bookmarkService.lookup(bookmark, Counter.class).orElseThrow();
+            assertThat(counter).isNotNull();
+            assertThat(counter.getNum()).isEqualTo(2L);
+        }).ifFailureFail();
+    }
+
+}
diff --git a/regressiontests/stable-core-wrapperfactory/src/test/java/org/apache/isis/regressiontests/core/wrapperfactory/integtests/model/Counter.java b/regressiontests/stable-core-wrapperfactory/src/test/java/org/apache/isis/regressiontests/core/wrapperfactory/integtests/model/Counter.java
new file mode 100644
index 0000000000..471c5f7776
--- /dev/null
+++ b/regressiontests/stable-core-wrapperfactory/src/test/java/org/apache/isis/regressiontests/core/wrapperfactory/integtests/model/Counter.java
@@ -0,0 +1,76 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.isis.regressiontests.core.wrapperfactory.integtests.model;
+
+import lombok.*;
+
+import javax.inject.Named;
+import javax.jdo.annotations.Column;
+import javax.jdo.annotations.DatastoreIdentity;
+import javax.jdo.annotations.IdGeneratorStrategy;
+import javax.jdo.annotations.PersistenceCapable;
+
+import org.apache.isis.applib.annotation.*;
+
+@PersistenceCapable(
+        schema = TestDomainModel.SCHEMA,
+        table = "Counter"
+)
+@DatastoreIdentity(strategy = IdGeneratorStrategy.IDENTITY, column = "id")
+@Named(TestDomainModel.NAMESPACE + ".Counter")
+@DomainObject(nature = Nature.ENTITY)
+@NoArgsConstructor
+@Builder
+@AllArgsConstructor(access = AccessLevel.PRIVATE)
+public class Counter implements Comparable<Counter> {
+
+    @Property(editing = Editing.ENABLED, commandPublishing = Publishing.ENABLED)
+    @Column(allowsNull = "true")
+    @Getter @Setter
+    private Long num;
+
+    @Column(allowsNull = "false")
+    @Getter @Setter
+    private String name;
+
+    @Column(allowsNull = "true")
+    @Getter @Setter
+    private Long num2;
+
+    @Action(commandPublishing = Publishing.ENABLED)
+    public Counter bumpUsingDeclaredAction() {
+        return doBump();
+    }
+
+    Counter doBump() {
+        if (getNum() == null) {
+            setNum(1L);
+        } else {
+            setNum(getNum() + 1);
+        }
+        return this;
+    }
+
+    @Override
+    public int compareTo(final Counter o) {
+        return this.getName().compareTo(o.getName());
+    }
+}
diff --git a/regressiontests/stable-core-wrapperfactory/src/test/java/org/apache/isis/regressiontests/core/wrapperfactory/integtests/model/CounterRepository.java b/regressiontests/stable-core-wrapperfactory/src/test/java/org/apache/isis/regressiontests/core/wrapperfactory/integtests/model/CounterRepository.java
new file mode 100644
index 0000000000..6bde3c24b9
--- /dev/null
+++ b/regressiontests/stable-core-wrapperfactory/src/test/java/org/apache/isis/regressiontests/core/wrapperfactory/integtests/model/CounterRepository.java
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.isis.regressiontests.core.wrapperfactory.integtests.model;
+
+import java.util.List;
+import java.util.Objects;
+
+import javax.inject.Inject;
+
+import org.apache.isis.applib.services.repository.RepositoryService;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public class CounterRepository {
+
+    private final Class<Counter> counterClass = Counter.class;
+
+    public List<Counter> find() {
+        return repositoryService.allInstances(counterClass);
+    }
+
+    public Counter persist(Counter counter) {
+        return repositoryService.persistAndFlush(counter);
+    }
+
+    public void removeAll() {
+        repositoryService.removeAll(counterClass);
+    }
+
+    @Inject RepositoryService repositoryService;
+
+    public Counter findByName(String name) {
+        List<Counter> xes = find();
+        return xes.stream().filter(x -> Objects.equals(x.getName(), name)).findFirst().orElseThrow();
+    }
+}
diff --git a/regressiontests/stable-core-wrapperfactory/src/test/java/org/apache/isis/regressiontests/core/wrapperfactory/integtests/model/Counter_bumpUsingMixin.java b/regressiontests/stable-core-wrapperfactory/src/test/java/org/apache/isis/regressiontests/core/wrapperfactory/integtests/model/Counter_bumpUsingMixin.java
new file mode 100644
index 0000000000..25b966979a
--- /dev/null
+++ b/regressiontests/stable-core-wrapperfactory/src/test/java/org/apache/isis/regressiontests/core/wrapperfactory/integtests/model/Counter_bumpUsingMixin.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.isis.regressiontests.core.wrapperfactory.integtests.model;
+
+import lombok.RequiredArgsConstructor;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.Publishing;
+import org.apache.isis.applib.services.wrapper.Mixin;
+
+@Action(
+        commandPublishing = Publishing.ENABLED,
+        executionPublishing = Publishing.ENABLED
+)
+@RequiredArgsConstructor
+public class Counter_bumpUsingMixin implements Mixin<Counter> {
+
+    private final Counter counter;
+
+    public Counter act() {
+        return counter.doBump();
+    }
+}
diff --git a/regressiontests/stable-core-wrapperfactory/src/test/java/org/apache/isis/regressiontests/core/wrapperfactory/integtests/model/TestDomainModel.java b/regressiontests/stable-core-wrapperfactory/src/test/java/org/apache/isis/regressiontests/core/wrapperfactory/integtests/model/TestDomainModel.java
new file mode 100644
index 0000000000..75efcf85ca
--- /dev/null
+++ b/regressiontests/stable-core-wrapperfactory/src/test/java/org/apache/isis/regressiontests/core/wrapperfactory/integtests/model/TestDomainModel.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.isis.regressiontests.core.wrapperfactory.integtests.model;
+
+import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
+import org.apache.isis.testing.fixtures.applib.modules.ModuleWithFixtures;
+import org.apache.isis.testing.fixtures.applib.teardown.jdo.TeardownFixtureJdoAbstract;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+
+@Configuration
+@Import({
+})
+@ComponentScan
+public class TestDomainModel implements ModuleWithFixtures {
+
+    public static final String NAMESPACE = "common.facade.test";
+    public static final String SCHEMA = "commonFacadeTest";
+
+    @Override
+    public FixtureScript getTeardownFixture() {
+        return new TeardownFixtureJdoAbstract() {
+            @Override
+            protected void execute(ExecutionContext executionContext) {
+                deleteFrom(Counter.class);
+            }
+        };
+    }
+}


[isis] 02/02: ISIS-3223: ISIS-3223: improves enhance.sh

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch ISIS-3223
in repository https://gitbox.apache.org/repos/asf/isis.git

commit d8e40af9a1ffe5998ed4a01b51eb69abb1f6eee6
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Sep 28 06:24:32 2022 +0100

    ISIS-3223: ISIS-3223: improves enhance.sh
---
 enhance.sh | 29 ++++++++++++++++++-----------
 1 file changed, 18 insertions(+), 11 deletions(-)

diff --git a/enhance.sh b/enhance.sh
index ec27edd2e9..74e998987b 100644
--- a/enhance.sh
+++ b/enhance.sh
@@ -31,6 +31,7 @@ usage() {
   echo "  -t : JDO regression tests (regressiontests/stable-persistence-jdo)"  >&2
   echo "  -u : JDO regression tests (regressiontests/stable-cmdexecauditsess)" >&2
   echo "  -w : JDO regression tests (regressiontests/core-wrapperfactory)"     >&2
+  echo "  -A : add -am (also make)"     >&2
 }
 
 
@@ -45,11 +46,12 @@ REGRESSIONTESTS_CMDEXECAUDITSESS=""
 REGRESSIONTESTS_CORE_WRAPPERFACTORY=""
 SECMAN=""
 SESSIONLOG=""
+ALSO_MAKE=""
 
 PATHS=()
 ALL_IF_REQUIRED=""
 
-while getopts ":acdeomshtuw" arg; do
+while getopts ":acdeomshtuwA" arg; do
   case $arg in
     h)
       usage
@@ -98,6 +100,9 @@ while getopts ":acdeomshtuw" arg; do
       PATHS+=( "regressiontests/stable-core-wrapperfactory" )
       ALL_IF_REQUIRED="-Dmodule-all"
       ;;
+    A)
+      ALSO_MAKE="-am"
+      ;;
     *)
       usage
       exit 1
@@ -106,16 +111,18 @@ done
 
 shift $((OPTIND-1))
 
-echo "AUDITTRAIL       : $AUDITTRAIL"
-echo "COMMANDLOG       : $COMMANDLOG"
-echo "EXECUTIONLOG     : $EXECUTIONLOG"
-echo "EXECUTIONOUTBOX  : $EXECUTIONOUTBOX"
-echo "SECMAN           : $SECMAN"
-echo "SESSIONLOG       : $SESSIONLOG"
-echo "DEMO             : $DEMO"
+echo "AUDITTRAIL                          : $AUDITTRAIL"
+echo "COMMANDLOG                          : $COMMANDLOG"
+echo "EXECUTIONLOG                        : $EXECUTIONLOG"
+echo "EXECUTIONOUTBOX                     : $EXECUTIONOUTBOX"
+echo "SECMAN                              : $SECMAN"
+echo "SESSIONLOG                          : $SESSIONLOG"
+echo "DEMO                                : $DEMO"
 echo "REGRESSIONTESTS_PERSISTENCE_JDO     : $REGRESSIONTESTS_PERSISTENCE_JDO"
 echo "REGRESSIONTESTS_CMDEXECAUDITSESS    : $REGRESSIONTESTS_CMDEXECAUDITSESS"
-echo "REGRESSIONTESTS_CORE_WRAPPERFACTORY : REGRESSIONTESTS_CORE_WRAPPERFACTORY"
+echo "REGRESSIONTESTS_CORE_WRAPPERFACTORY : $REGRESSIONTESTS_CORE_WRAPPERFACTORY"
+echo ""
+echo "ALSO_MAKE                           : $ALSO_MAKE"
 
 
 printf -v PATHS_SPLATTED '%s,' "${PATHS[@]}"
@@ -128,5 +135,5 @@ if [ "$PL_ARG" = " " ]; then
   exit 1
 fi
 
-echo mvn install -DskipTests -o -T1C -am -pl $PL_ARG
-mvn install -DskipTests -o -T1C -am -pl $PL_ARG
+echo mvn install -DskipTests -o -T1C $ALSO_MAKE -pl $PL_ARG
+mvn install -DskipTests -o -T1C $ALSO_MAKE -pl $PL_ARG