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>