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

ahuber pushed a commit to branch 2033-IoC
in repository https://gitbox.apache.org/repos/asf/isis.git


The following commit(s) were added to refs/heads/2033-IoC by this push:
     new 7af18f9  ISIS-2033: brings simple-app up to speed, such that it runs 
on tomcat
7af18f9 is described below

commit 7af18f905b9045744abdfc913021692789809a2b
Author: Andi Huber <[email protected]>
AuthorDate: Tue Jan 29 10:01:26 2019 +0100

    ISIS-2033: brings simple-app up to speed, such that it runs on tomcat
    
    Task-Url: https://issues.apache.org/jira/browse/ISIS-2033
---
 .../org/apache/isis/config/AppConfigLocator.java   | 14 ++++-
 .../isis/core/plugins/ioc/weld/WeldFactory.java    |  2 +-
 .../application/HelloWorldAppManifest.java         |  1 -
 example/application/simpleapp/application/pom.xml  |  6 +++
 .../services/org.apache.isis.config.AppConfig      |  1 +
 .../application/manifest/DomainAppAppManifest.java | 59 +++++++++++++++++++++-
 .../services/org.apache.isis.config.AppConfig      |  1 -
 .../modules/simple/SimpleModuleManifest.java       | 44 +---------------
 .../application/simpleapp/module-spring/pom.xml    | 36 ++++++++++---
 .../domainapp/modules/spring/SpringModule.java}    | 21 +-------
 example/application/simpleapp/pom.xml              | 17 +++++--
 11 files changed, 124 insertions(+), 78 deletions(-)

diff --git 
a/core/config/src/main/java/org/apache/isis/config/AppConfigLocator.java 
b/core/config/src/main/java/org/apache/isis/config/AppConfigLocator.java
index f469a07..c7a6ca9 100644
--- a/core/config/src/main/java/org/apache/isis/config/AppConfigLocator.java
+++ b/core/config/src/main/java/org/apache/isis/config/AppConfigLocator.java
@@ -21,7 +21,9 @@ package org.apache.isis.config;
 import java.util.HashSet;
 import java.util.NoSuchElementException;
 import java.util.Set;
+import java.util.function.Supplier;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 import org.apache.isis.commons.internal.cdi._CDI;
 import org.apache.isis.commons.internal.collections._Lists;
@@ -158,10 +160,18 @@ public final class AppConfigLocator {
         
         appConfig = lookupAppConfig_UsingServiceLoader();
         if(appConfig!=null) {
-            LOG.info(String.format("Located AppConfig '%s' via 
ServiceLoader.", appConfig.getClass().getName()));
+               
+               val appConfigImpl = appConfig;
+               val appConfigClass = appConfig.getClass();
+               
+            LOG.info(String.format("Located AppConfig '%s' via 
ServiceLoader.", appConfigClass.getName()));
+            
+            Supplier<Stream<Class<?>>> onDiscover = () -> Stream.concat(
+                       Stream.of(appConfigClass), 
+                       
appConfigImpl.isisConfiguration().streamClassesToDiscover());
             
             // as we are in a non-managed environment, we need to bootstrap 
CDI ourself
-            _CDI.init(appConfig.isisConfiguration()::streamClassesToDiscover);
+            _CDI.init(onDiscover);
             
             return appConfig;
         }
diff --git 
a/core/plugins/ioc-weld/src/main/java/org/apache/isis/core/plugins/ioc/weld/WeldFactory.java
 
b/core/plugins/ioc-weld/src/main/java/org/apache/isis/core/plugins/ioc/weld/WeldFactory.java
index a13fd51..336dff8 100644
--- 
a/core/plugins/ioc-weld/src/main/java/org/apache/isis/core/plugins/ioc/weld/WeldFactory.java
+++ 
b/core/plugins/ioc-weld/src/main/java/org/apache/isis/core/plugins/ioc/weld/WeldFactory.java
@@ -59,7 +59,7 @@ public class WeldFactory {
                                
                                "org.jboss.weld.module.web.WeldWebModule",
                            
-                           "domainapp.application.HelloWorldAppManifest", // 
specific to the app
+                           //"domainapp.application.HelloWorldAppManifest", // 
specific to the app
                            
                            "org.apache.isis.config.AppConfig",
                            "org.apache.isis.applib.AppManifest",
diff --git 
a/example/application/helloworld/src/main/java/domainapp/application/HelloWorldAppManifest.java
 
b/example/application/helloworld/src/main/java/domainapp/application/HelloWorldAppManifest.java
index 865d9cf..6e50a6e 100644
--- 
a/example/application/helloworld/src/main/java/domainapp/application/HelloWorldAppManifest.java
+++ 
b/example/application/helloworld/src/main/java/domainapp/application/HelloWorldAppManifest.java
@@ -39,7 +39,6 @@ import domainapp.dom.HelloWorldModule;
 /**
  * Bootstrap the application.
  */
-@Singleton // only if you want AppConfig to be managed by CDI (if available), 
otherwise not required
 public class HelloWorldAppManifest extends AppManifestAbstract2 implements 
AppConfig {
 
     public static final Builder BUILDER = Builder
diff --git a/example/application/simpleapp/application/pom.xml 
b/example/application/simpleapp/application/pom.xml
index 6a4823f..0ee27b6 100644
--- a/example/application/simpleapp/application/pom.xml
+++ b/example/application/simpleapp/application/pom.xml
@@ -103,6 +103,12 @@
             <artifactId>simpleapp-module-simple</artifactId>
         </dependency>
 
+               <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>simpleapp-module-spring</artifactId>
+        </dependency>
+
+
         <!-- TESTS -->
         <dependency>
             <groupId>${project.groupId}</groupId>
diff --git 
a/example/application/simpleapp/application/src/main/java/META-INF/services/org.apache.isis.config.AppConfig
 
b/example/application/simpleapp/application/src/main/java/META-INF/services/org.apache.isis.config.AppConfig
new file mode 100644
index 0000000..8e37d0c
--- /dev/null
+++ 
b/example/application/simpleapp/application/src/main/java/META-INF/services/org.apache.isis.config.AppConfig
@@ -0,0 +1 @@
+domainapp.application.manifest.DomainAppAppManifest
\ No newline at end of file
diff --git 
a/example/application/simpleapp/application/src/main/java/domainapp/application/manifest/DomainAppAppManifest.java
 
b/example/application/simpleapp/application/src/main/java/domainapp/application/manifest/DomainAppAppManifest.java
index 7a57a2d..a85bb2d 100644
--- 
a/example/application/simpleapp/application/src/main/java/domainapp/application/manifest/DomainAppAppManifest.java
+++ 
b/example/application/simpleapp/application/src/main/java/domainapp/application/manifest/DomainAppAppManifest.java
@@ -18,23 +18,78 @@
  */
 package domainapp.application.manifest;
 
+import javax.enterprise.inject.Produces;
+import javax.inject.Singleton;
+
 import org.apache.isis.applib.AppManifestAbstract2;
+import org.apache.isis.config.AppConfig;
+import org.apache.isis.config.IsisConfiguration;
+import org.apache.isis.config.beans.WebAppConfigBean;
+import 
org.apache.isis.core.runtime.authorization.standard.AuthorizationManagerStandard;
+import org.apache.isis.core.runtime.threadpool.ThreadPoolExecutionMode;
+import org.apache.isis.core.runtime.threadpool.ThreadPoolSupport;
+import org.apache.isis.core.security.authentication.bypass.AuthenticatorBypass;
+import 
org.apache.isis.core.security.authentication.manager.AuthenticationManager;
+import 
org.apache.isis.core.security.authentication.standard.AuthenticationManagerStandard;
+import org.apache.isis.core.security.authorization.bypass.AuthorizorBypass;
+import 
org.apache.isis.core.security.authorization.manager.AuthorizationManager;
 
 import domainapp.application.DomainAppApplicationModule;
+import domainapp.modules.spring.SpringModule;
 
 /**
  * Bootstrap the application.
  */
-public class DomainAppAppManifest extends AppManifestAbstract2 {
+public class DomainAppAppManifest extends AppManifestAbstract2 implements 
AppConfig {
 
     public static final Builder BUILDER = Builder
             .forModule(new DomainAppApplicationModule())
             .withConfigurationPropertiesFile(
                     DomainAppAppManifest.class, "isis-non-changing.properties")
-            .withAuthMechanism("shiro");
+            .withAuthMechanism("shiro")
+            .withAdditionalModules(SpringModule.class)
+            ;
 
     public DomainAppAppManifest() {
         super(BUILDER);
+        
+        ThreadPoolSupport.HIGHEST_CONCURRENCY_EXECUTION_MODE_ALLOWED = 
+                       
ThreadPoolExecutionMode.SEQUENTIAL_WITHIN_CALLING_THREAD;
+    }
+
+       // Implementing AppConfig, to tell the framework how to bootstrap the 
configuration.
+    @Override @Produces @Singleton
+    public IsisConfiguration isisConfiguration() {
+        return IsisConfiguration.buildFromAppManifest(this);
+    }
+    
+        /**
+     * The standard authentication manager, configured with the 'bypass' 
authenticator 
+     * (allows all requests through).
+     * <p>
+     * integration tests ignore appManifest for authentication and 
authorization.
+     */
+    @Produces @Singleton
+    public AuthenticationManager authenticationManagerWithBypass() {
+        final AuthenticationManagerStandard authenticationManager = new 
AuthenticationManagerStandard();
+        authenticationManager.addAuthenticator(new AuthenticatorBypass());
+        return authenticationManager;
+    }
+    
+    @Produces @Singleton
+    public AuthorizationManager authorizationManagerWithBypass() {
+        final AuthorizationManagerStandard authorizationManager = new 
AuthorizationManagerStandard() {
+            {
+                authorizor = new AuthorizorBypass();
+            }  
+        };
+        return authorizationManager;
     }
 
+    @Produces @Singleton
+    public WebAppConfigBean webAppConfigBean() {
+        return WebAppConfigBean.builder()
+                .build();
+    }
+    
 }
diff --git 
a/example/application/simpleapp/module-simple/src/main/java/META-INF/services/org.apache.isis.config.AppConfig
 
b/example/application/simpleapp/module-simple/src/main/java/META-INF/services/org.apache.isis.config.AppConfig
deleted file mode 100644
index 0cc3c7f..0000000
--- 
a/example/application/simpleapp/module-simple/src/main/java/META-INF/services/org.apache.isis.config.AppConfig
+++ /dev/null
@@ -1 +0,0 @@
-domainapp.modules.simple.SimpleModuleManifest
\ No newline at end of file
diff --git 
a/example/application/simpleapp/module-simple/src/main/java/domainapp/modules/simple/SimpleModuleManifest.java
 
b/example/application/simpleapp/module-simple/src/main/java/domainapp/modules/simple/SimpleModuleManifest.java
index 141f949..5f03098 100644
--- 
a/example/application/simpleapp/module-simple/src/main/java/domainapp/modules/simple/SimpleModuleManifest.java
+++ 
b/example/application/simpleapp/module-simple/src/main/java/domainapp/modules/simple/SimpleModuleManifest.java
@@ -18,25 +18,12 @@
  */
 package domainapp.modules.simple;
 
-import javax.enterprise.context.ApplicationScoped;
-import javax.enterprise.inject.Produces;
-import javax.inject.Singleton;
-
 import org.apache.isis.applib.AppManifestAbstract2;
-import org.apache.isis.config.AppConfig;
-import org.apache.isis.config.IsisConfiguration;
-import 
org.apache.isis.core.runtime.authorization.standard.AuthorizationManagerStandard;
-import org.apache.isis.core.security.authentication.bypass.AuthenticatorBypass;
-import 
org.apache.isis.core.security.authentication.manager.AuthenticationManager;
-import 
org.apache.isis.core.security.authentication.standard.AuthenticationManagerStandard;
-import org.apache.isis.core.security.authorization.bypass.AuthorizorBypass;
-import 
org.apache.isis.core.security.authorization.manager.AuthorizationManager;
 
 /**
  * Used by <code>isis-maven-plugin</code> (build-time validation of the 
module) and also by module-level integration tests.
  */
-@Singleton
-public class SimpleModuleManifest extends AppManifestAbstract2 implements 
AppConfig {
+public class SimpleModuleManifest extends AppManifestAbstract2 {
 
     public static final Builder BUILDER = Builder.forModule(new SimpleModule())
             
.withConfigurationProperty("isis.persistor.datanucleus.impl.datanucleus.schema.autoCreateAll","true")
@@ -47,33 +34,6 @@ public class SimpleModuleManifest extends 
AppManifestAbstract2 implements AppCon
         super(BUILDER);
     }
 
-       // Implementing AppConfig, to tell the framework how to bootstrap the 
configuration.
-    @Override @Produces @Singleton
-    public IsisConfiguration isisConfiguration() {
-        return IsisConfiguration.buildFromAppManifest(this);
-    }
-    
-        /**
-     * The standard authentication manager, configured with the 'bypass' 
authenticator 
-     * (allows all requests through).
-     * <p>
-     * integration tests ignore appManifest for authentication and 
authorization.
-     */
-    @Produces @Singleton
-    public AuthenticationManager authenticationManagerWithBypass() {
-        final AuthenticationManagerStandard authenticationManager = new 
AuthenticationManagerStandard();
-        authenticationManager.addAuthenticator(new AuthenticatorBypass());
-        return authenticationManager;
-    }
-    
-    @Produces @Singleton
-    public AuthorizationManager authorizationManagerWithBypass() {
-        final AuthorizationManagerStandard authorizationManager = new 
AuthorizationManagerStandard() {
-            {
-                authorizor = new AuthorizorBypass();
-            }  
-        };
-        return authorizationManager;
-    }
+
 
 }
diff --git a/example/application/simpleapp/module-spring/pom.xml 
b/example/application/simpleapp/module-spring/pom.xml
index 03034a9..b4c112c 100644
--- a/example/application/simpleapp/module-spring/pom.xml
+++ b/example/application/simpleapp/module-spring/pom.xml
@@ -30,12 +30,14 @@
     <name>Apache Isis App - SimpleApp Spring (Data) Module</name>
 
     <properties>
-        <isis-maven-plugin.validate.appManifest>
-            domainapp.modules.simple.SimpleModuleManifest
-        </isis-maven-plugin.validate.appManifest>
+       <spring-boot.version>2.1.2.RELEASE</spring-boot.version>
+    
+<!--         <isis-maven-plugin.validate.appManifest> -->
+<!--             domainapp.modules.simple.SimpleModuleManifest -->
+<!--         </isis-maven-plugin.validate.appManifest> -->
 
-        
<maven-checkstyle-plugin.configLocation>${project.parent.basedir}/_checks/checkstyle.xml</maven-checkstyle-plugin.configLocation>
-        
<maven-pmd-plugin.ruleset>${project.parent.basedir}/_checks/pmd.xml</maven-pmd-plugin.ruleset>
+<!--         
<maven-checkstyle-plugin.configLocation>${project.parent.basedir}/_checks/checkstyle.xml</maven-checkstyle-plugin.configLocation>
 -->
+<!--         
<maven-pmd-plugin.ruleset>${project.parent.basedir}/_checks/pmd.xml</maven-pmd-plugin.ruleset>
 -->
     </properties>
 
     <build>
@@ -145,12 +147,26 @@
             <artifactId>isis-core-plugins-jdo-datanucleus-5</artifactId>
         </dependency>
         
-
        <dependency>
             <groupId>org.apache.isis.core</groupId>
             <artifactId>isis-core-plugins-jaxrs-resteasy-4</artifactId>
         </dependency>
 
+        <!-- OTHER DEPENDENCIES -->
+
+        <dependency>
+            <groupId>com.h2database</groupId>
+            <artifactId>h2</artifactId>
+        </dependency>
+
+        <!-- SPRING -->
+        
+               <dependency>
+                       <groupId>org.springframework.boot</groupId>
+                       <artifactId>spring-boot-starter-data-jpa</artifactId>
+                       <version>${spring-boot.version}</version>
+               </dependency>
+
         <!-- TESTS -->
 
         <dependency>
@@ -165,6 +181,14 @@
             <artifactId>hsqldb</artifactId>
             <scope>test</scope>
         </dependency>
+        
+        <dependency>
+                       <groupId>org.springframework.boot</groupId>
+                       <artifactId>spring-boot-starter-test</artifactId>
+                       <version>${spring-boot.version}</version>
+                       <scope>test</scope>
+               </dependency>
+               
     </dependencies>
 
 
diff --git 
a/example/application/simpleapp/application/src/main/java/domainapp/application/manifest/DomainAppAppManifest.java
 
b/example/application/simpleapp/module-spring/src/main/java/domainapp/modules/spring/SpringModule.java
similarity index 58%
copy from 
example/application/simpleapp/application/src/main/java/domainapp/application/manifest/DomainAppAppManifest.java
copy to 
example/application/simpleapp/module-spring/src/main/java/domainapp/modules/spring/SpringModule.java
index 7a57a2d..c7dbef3 100644
--- 
a/example/application/simpleapp/application/src/main/java/domainapp/application/manifest/DomainAppAppManifest.java
+++ 
b/example/application/simpleapp/module-spring/src/main/java/domainapp/modules/spring/SpringModule.java
@@ -16,25 +16,8 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package domainapp.application.manifest;
+package domainapp.modules.spring;
 
-import org.apache.isis.applib.AppManifestAbstract2;
-
-import domainapp.application.DomainAppApplicationModule;
-
-/**
- * Bootstrap the application.
- */
-public class DomainAppAppManifest extends AppManifestAbstract2 {
-
-    public static final Builder BUILDER = Builder
-            .forModule(new DomainAppApplicationModule())
-            .withConfigurationPropertiesFile(
-                    DomainAppAppManifest.class, "isis-non-changing.properties")
-            .withAuthMechanism("shiro");
-
-    public DomainAppAppManifest() {
-        super(BUILDER);
-    }
+public class SpringModule {
 
 }
diff --git a/example/application/simpleapp/pom.xml 
b/example/application/simpleapp/pom.xml
index f7f439b..89415a7 100644
--- a/example/application/simpleapp/pom.xml
+++ b/example/application/simpleapp/pom.xml
@@ -39,8 +39,7 @@
         <revision>2.0.0-M3-SNAPSHOT</revision>
         <isis.version>${revision}</isis.version>
 
-        <!-- bumping to 1.18.4 causes a conflict with DataNucleus' annotation 
processor. -->
-        <lombok.version>1.18.2</lombok.version>
+        <lombok.version>[1.18.4,)</lombok.version>
 
         <compiler-plugin.source>1.8</compiler-plugin.source>
         <compiler-plugin.target>1.8</compiler-plugin.target>
@@ -54,7 +53,6 @@
         <datanucleus-api-jdo.version>5.2.0-m2</datanucleus-api-jdo.version>
         <datanucleus-core.version>5.2.0-m2</datanucleus-core.version>
         <datanucleus-jodatime.version>5.2.0-m1</datanucleus-jodatime.version>
-        <hsqldb.version>2.4.1</hsqldb.version>
 
         <!-- override incode-build -->
         <maven-surefire-plugin.version>2.22.1</maven-surefire-plugin.version>
@@ -132,12 +130,23 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.isis.example.application</groupId>
+                <artifactId>simpleapp-module-spring</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.isis.example.application</groupId>
                 <artifactId>simpleapp-module-simple</artifactId>
                 <version>${project.version}</version>
                 <type>test-jar</type>
             </dependency>
             <dependency>
                 <groupId>org.apache.isis.example.application</groupId>
+                <artifactId>simpleapp-module-spring</artifactId>
+                <version>${project.version}</version>
+                <type>test-jar</type>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.isis.example.application</groupId>
                 <artifactId>simpleapp-application</artifactId>
                 <version>${project.version}</version>
             </dependency>
@@ -175,9 +184,9 @@
 
     <modules>
         <module>module-simple</module>
+        <module>module-spring</module>
         <module>application</module>
         <module>webapp</module>
-        <module>module-spring</module>
     </modules>
 
     <profiles>

Reply via email to