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 2020/01/20 17:59:39 UTC

[isis] branch master updated (aa9dc70 -> 910c808)

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

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


    from aa9dc70  ISIS-2158: fixes regression from previous commits
     new 2670ee1  ISIS-2267: moves existing stub documents for flywayjdo to flyway, move under userguide.
     new dde83e6  ISIS-2267: first-cut impl of FlywayDataSource
     new e60bd98  ISIS-2267: wip
     new bf8d01c  ISIS-2267: wip, gonna be simplifying this I hope.
     new 0b139ea  ISIS-2267: updates docs, simplifies implementation.
     new 1769731  ISIS-2267: fixes antora playbooks
     new 5eec873  Merge branch 'ISIS-2267'
     new d8650ef  ISIS-2267: updates docs
     new 910c808  ISIS-2267: more updates docs

The 9 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:
 .../modules/ROOT/partials/component-nav.adoc       |  4 +-
 .../modules/ROOT/partials/component-nav.adoc       |  2 +-
 .../refguide/modules/ROOT/partials/module-nav.adoc |  1 +
 antora/components/userguide/modules/ROOT/nav.adoc  |  1 +
 .../userguide/modules/ROOT/pages/about.adoc        | 14 +---
 .../modules/ROOT/partials/component-nav.adoc       |  8 +++
 .../modules/ROOT/partials/module-nav.adoc          |  0
 antora/components/userguide/modules/btb/nav.adoc   |  9 +--
 .../btb/{nav.adoc => partials/module-nav.adoc}     |  0
 antora/components/userguide/modules/fun/nav.adoc   | 25 +------
 .../fun/{nav.adoc => partials/module-nav.adoc}     |  0
 antora/playbooks/site-refguide.yml                 |  1 +
 antora/playbooks/site-userguide.yml                |  8 ++-
 antora/playbooks/site.yml                          |  2 +-
 .../examples/annotation/OrderPrecedence.java       |  8 +--
 .../services/audit/AuditerServiceLogging.java      |  2 +-
 .../ContentMappingServiceForCommandDto.java        |  4 +-
 .../ContentMappingServiceForCommandsDto.java       |  2 +-
 .../services/publish/PublisherServiceLogging.java  |  2 +-
 .../QueryResultsCacheDefault.java                  |  2 +-
 .../examples/services/scratchpad/Scratchpad.java   |  2 +-
 .../services/tablecol/TableColumnOrderService.java |  2 +-
 .../core/flyway}/adoc/antora.yml                   |  2 +-
 .../core/flyway/adoc/modules/flyway/nav.adoc       |  1 +
 .../flyway/adoc/modules/flyway/pages/about.adoc    | 84 ++++++++++++++++++++++
 .../adoc/modules/flyway/partials/module-nav.adoc   |  3 +
 .../api => extensions/core/flyway/impl}/pom.xml    | 33 +++++----
 .../flyway/impl/IsisModuleExtFlywayImpl.java       | 14 ++--
 .../jdo/flywayjdo/impl => core/flyway}/pom.xml     | 27 ++++---
 .../persistence/jdo/flywayjdo/adoc/antora.yml      |  2 -
 .../jdo/flywayjdo/adoc/modules/flywayjdo/nav.adoc  |  2 -
 .../adoc/modules/flywayjdo/pages/about.adoc        |  5 --
 .../modules/flywayjdo/partials/module-nav.adoc     |  3 -
 .../flywayjdo/dom/IsisModuleExtFlywayJdo.java      | 28 --------
 extensions/pom.xml                                 |  7 ++
 .../adoc/modules/ROOT/partials/component-nav.adoc  |  2 -
 36 files changed, 175 insertions(+), 137 deletions(-)
 create mode 100644 antora/components/userguide/modules/ROOT/partials/component-nav.adoc
 copy antora/components/{refguide => userguide}/modules/ROOT/partials/module-nav.adoc (100%)
 copy antora/components/userguide/modules/btb/{nav.adoc => partials/module-nav.adoc} (100%)
 copy antora/components/userguide/modules/fun/{nav.adoc => partials/module-nav.adoc} (100%)
 copy {api/applib/src/main => extensions/core/flyway}/adoc/antora.yml (50%)
 create mode 100644 extensions/core/flyway/adoc/modules/flyway/nav.adoc
 create mode 100644 extensions/core/flyway/adoc/modules/flyway/pages/about.adoc
 create mode 100644 extensions/core/flyway/adoc/modules/flyway/partials/module-nav.adoc
 copy {mappings/restclient/api => extensions/core/flyway/impl}/pom.xml (64%)
 copy testing/h2console/ui/src/main/java/org/apache/isis/testing/h2console/ui/IsisModuleTestingH2ConsoleUi.java => extensions/core/flyway/impl/src/main/java/org/apache/isis/extensions/flyway/impl/IsisModuleExtFlywayImpl.java (75%)
 rename extensions/{persistence/jdo/flywayjdo/impl => core/flyway}/pom.xml (69%)
 delete mode 100644 extensions/persistence/jdo/flywayjdo/adoc/antora.yml
 delete mode 100644 extensions/persistence/jdo/flywayjdo/adoc/modules/flywayjdo/nav.adoc
 delete mode 100644 extensions/persistence/jdo/flywayjdo/adoc/modules/flywayjdo/pages/about.adoc
 delete mode 100644 extensions/persistence/jdo/flywayjdo/adoc/modules/flywayjdo/partials/module-nav.adoc
 delete mode 100644 extensions/persistence/jdo/flywayjdo/impl/src/main/java/org/apache/isis/extensions/flywayjdo/dom/IsisModuleExtFlywayJdo.java


[isis] 07/09: Merge branch 'ISIS-2267'

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

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

commit 5eec8735ddfea9226f3c0f03b610141b78f1bf77
Merge: aa9dc70 1769731
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Jan 20 15:19:57 2020 +0000

    Merge branch 'ISIS-2267'

 .../modules/ROOT/partials/component-nav.adoc       |  2 +-
 .../refguide/modules/ROOT/partials/module-nav.adoc |  1 +
 .../userguide/modules/ROOT/pages/about.adoc        | 14 +---
 .../modules/ROOT/partials/component-nav.adoc       |  8 +++
 .../modules/ROOT/partials/module-nav.adoc          |  0
 antora/components/userguide/modules/btb/nav.adoc   |  9 +--
 .../btb/{nav.adoc => partials/module-nav.adoc}     |  0
 antora/components/userguide/modules/fun/nav.adoc   | 25 +------
 .../fun/{nav.adoc => partials/module-nav.adoc}     |  0
 antora/playbooks/site-refguide.yml                 |  1 +
 antora/playbooks/site-userguide.yml                |  8 ++-
 antora/playbooks/site.yml                          |  2 +-
 .../jdo/flywayjdo => core/flyway}/adoc/antora.yml  |  2 +-
 .../core/flyway/adoc/modules/flyway/nav.adoc       |  1 +
 .../flyway/adoc/modules/flyway/pages/about.adoc    | 84 ++++++++++++++++++++++
 .../adoc/modules/flyway/partials/module-nav.adoc   |  3 +
 .../jdo/flywayjdo => core/flyway}/impl/pom.xml     | 34 +++++++--
 .../flyway/impl/IsisModuleExtFlywayImpl.java}      | 12 +++-
 .../jdo/flywayjdo/impl => core/flyway}/pom.xml     | 27 ++++---
 .../jdo/flywayjdo/adoc/modules/flywayjdo/nav.adoc  |  2 -
 .../adoc/modules/flywayjdo/pages/about.adoc        |  5 --
 .../modules/flywayjdo/partials/module-nav.adoc     |  3 -
 extensions/pom.xml                                 |  7 ++
 23 files changed, 171 insertions(+), 79 deletions(-)


[isis] 08/09: ISIS-2267: updates docs

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

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

commit d8650ef03efeec34c04c58845892d6887493ade0
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Jan 20 15:25:03 2020 +0000

    ISIS-2267: updates docs
---
 .../modules/applib-ant/examples/annotation/OrderPrecedence.java   | 8 ++++----
 .../applib-svc/examples/services/audit/AuditerServiceLogging.java | 2 +-
 .../conmap/command/ContentMappingServiceForCommandDto.java        | 4 ++--
 .../conmap/command/ContentMappingServiceForCommandsDto.java       | 2 +-
 .../examples/services/publish/PublisherServiceLogging.java        | 2 +-
 .../services/queryresultscache/QueryResultsCacheDefault.java      | 2 +-
 .../applib-svc/examples/services/scratchpad/Scratchpad.java       | 2 +-
 .../examples/services/tablecol/TableColumnOrderService.java       | 2 +-
 8 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/api/applib/src/main/adoc/modules/applib-ant/examples/annotation/OrderPrecedence.java b/api/applib/src/main/adoc/modules/applib-ant/examples/annotation/OrderPrecedence.java
index 201061f..26b7791 100644
--- a/api/applib/src/main/adoc/modules/applib-ant/examples/annotation/OrderPrecedence.java
+++ b/api/applib/src/main/adoc/modules/applib-ant/examples/annotation/OrderPrecedence.java
@@ -33,7 +33,7 @@ public class OrderPrecedence {
      * @see java.lang.Integer#MIN_VALUE
      * @see Ordered#HIGHEST_PRECEDENCE
      */
-    public static final int HIGHEST = Ordered.HIGHEST_PRECEDENCE;
+    public static final int FIRST = Ordered.HIGHEST_PRECEDENCE;
 
     /**
      * Useful constant for the lowest precedence value.
@@ -41,12 +41,12 @@ public class OrderPrecedence {
      * @see java.lang.Integer#MAX_VALUE
      * @see Ordered#LOWEST_PRECEDENCE
      */
-    public static final int LOWEST = Ordered.LOWEST_PRECEDENCE;
+    public static final int LAST = Ordered.LOWEST_PRECEDENCE;
 
     /**
      * Used by framework services that are unlikely to be overridden by application code.
      */
-    public static final int HIGH = HIGHEST / 2;
+    public static final int EARLY = FIRST / 2;
     /**
      * Used by framework services that could be overridden by application code (though not commonly).
      */
@@ -54,7 +54,7 @@ public class OrderPrecedence {
     /**
      * Used by framework services that are expected to be overridden by application code, or that act as a fallback.
      */
-    public static final int LOW = OrderPrecedence.LOWEST / 2;
+    public static final int LATE = OrderPrecedence.LAST / 2;
 
 }
 // end::refguide[]
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/audit/AuditerServiceLogging.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/audit/AuditerServiceLogging.java
index 8222b8a..adc9570 100644
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/audit/AuditerServiceLogging.java
+++ b/api/applib/src/main/adoc/modules/applib-svc/examples/services/audit/AuditerServiceLogging.java
@@ -36,7 +36,7 @@ import lombok.extern.log4j.Log4j2;
 
 @Service
 @Named("isisApplib.AuditerServiceLogging")
-@Order(OrderPrecedence.LOW)
+@Order(OrderPrecedence.LATE)
 @Primary
 @Qualifier("logging")
 @Log4j2
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/conmap/command/ContentMappingServiceForCommandDto.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/conmap/command/ContentMappingServiceForCommandDto.java
index ca64906..1ad9bc9 100644
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/conmap/command/ContentMappingServiceForCommandDto.java
+++ b/api/applib/src/main/adoc/modules/applib-svc/examples/services/conmap/command/ContentMappingServiceForCommandDto.java
@@ -45,7 +45,7 @@ import org.apache.isis.schema.jaxbadapters.JavaSqlTimestampXmlGregorianCalendarA
 
 @Service
 @Named("isisApplib.ContentMappingServiceForCommandDto")
-@Order(OrderPrecedence.HIGH)
+@Order(OrderPrecedence.EARLY)
 @Primary
 @Qualifier("CommandDto")
 public class ContentMappingServiceForCommandDto implements ContentMappingService {
@@ -107,7 +107,7 @@ public class ContentMappingServiceForCommandDto implements ContentMappingService
     @Named("isisApplib.ContentMappingServiceForCommandDto.CopyOverFromCommand")
     // specify quite a high priority since custom processors will probably want to run after this one
     // (but can choose to run before if they wish)
-    @Order(OrderPrecedence.HIGH)
+    @Order(OrderPrecedence.EARLY)
     @Qualifier("Command")
     public static class CopyOverFromCommand implements CommandDtoProcessorService {
 
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/conmap/command/ContentMappingServiceForCommandsDto.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/conmap/command/ContentMappingServiceForCommandsDto.java
index 6a7e793..ade5070 100644
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/conmap/command/ContentMappingServiceForCommandsDto.java
+++ b/api/applib/src/main/adoc/modules/applib-svc/examples/services/conmap/command/ContentMappingServiceForCommandsDto.java
@@ -36,7 +36,7 @@ import org.apache.isis.schema.cmd.v2.CommandsDto;
 
 @Service
 @Named("isisApplib.ContentMappingServiceForCommandsDto")
-@Order(OrderPrecedence.HIGH)
+@Order(OrderPrecedence.EARLY)
 @Primary
 @Qualifier("CommandsDto")
 public class ContentMappingServiceForCommandsDto implements ContentMappingService {
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/publish/PublisherServiceLogging.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/publish/PublisherServiceLogging.java
index 69fcb63..a8fb060 100644
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/publish/PublisherServiceLogging.java
+++ b/api/applib/src/main/adoc/modules/applib-svc/examples/services/publish/PublisherServiceLogging.java
@@ -36,7 +36,7 @@ import lombok.extern.log4j.Log4j2;
 
 @Service
 @Named("isisApplib.PublisherServiceLogging")
-@Order(OrderPrecedence.LOW)
+@Order(OrderPrecedence.LATE)
 @Primary
 @Qualifier("Logging")
 @Log4j2
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/queryresultscache/QueryResultsCacheDefault.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/queryresultscache/QueryResultsCacheDefault.java
index 869e486..6f3e79c 100644
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/queryresultscache/QueryResultsCacheDefault.java
+++ b/api/applib/src/main/adoc/modules/applib-svc/examples/services/queryresultscache/QueryResultsCacheDefault.java
@@ -50,7 +50,7 @@ import lombok.extern.log4j.Log4j2;
  */
 @Service
 @Named("isisApplib.QueryResultsCacheInternal")
-@Order(OrderPrecedence.HIGH)
+@Order(OrderPrecedence.EARLY)
 @Primary
 @RequestScoped
 @Qualifier("Default")
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/scratchpad/Scratchpad.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/scratchpad/Scratchpad.java
index 79f817b..56e4578 100644
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/scratchpad/Scratchpad.java
+++ b/api/applib/src/main/adoc/modules/applib-svc/examples/services/scratchpad/Scratchpad.java
@@ -43,7 +43,7 @@ import org.apache.isis.core.commons.internal.collections._Maps;
  */
 @Service
 @RequestScoped
-@Order(OrderPrecedence.HIGH)
+@Order(OrderPrecedence.EARLY)
 @Primary
 @Named("isisApplib.Scratchpad")
 @Qualifier("Default")
diff --git a/api/applib/src/main/adoc/modules/applib-svc/examples/services/tablecol/TableColumnOrderService.java b/api/applib/src/main/adoc/modules/applib-svc/examples/services/tablecol/TableColumnOrderService.java
index 7308ed8..9ade648 100644
--- a/api/applib/src/main/adoc/modules/applib-svc/examples/services/tablecol/TableColumnOrderService.java
+++ b/api/applib/src/main/adoc/modules/applib-svc/examples/services/tablecol/TableColumnOrderService.java
@@ -46,7 +46,7 @@ public interface TableColumnOrderService {
      */
     @Service
     @Named("isisApplib.TableColumnOrderService.Default")
-    @Order(OrderPrecedence.LOW)
+    @Order(OrderPrecedence.LATE)
     @Primary
     @Qualifier("Default")
     public static class Default implements TableColumnOrderService {


[isis] 04/09: ISIS-2267: wip, gonna be simplifying this I hope.

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

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

commit bf8d01c5a4f6efa7c198a12bb45720eafcdcf24f
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Jan 20 13:45:41 2020 +0000

    ISIS-2267: wip, gonna be simplifying this I hope.
---
 .../flyway/adoc/modules/flyway/pages/about.adoc    | 39 +++++++++++++--
 extensions/core/flyway/impl/pom.xml                |  9 +++-
 .../flyway/impl/IsisModuleExtFlywayImpl.java       | 14 +++---
 ...nfigurationCustomizerFromIsisConfiguration.java | 57 ++++++----------------
 .../config/FlywayMigrationStrategyForIsis.java     | 54 ++++++++++++++++++++
 .../flyway/impl/config/JdbcConnectionParams.java   | 57 ++++++++++++++++++++++
 extensions/pom.xml                                 |  2 +-
 7 files changed, 176 insertions(+), 56 deletions(-)

diff --git a/extensions/core/flyway/adoc/modules/flyway/pages/about.adoc b/extensions/core/flyway/adoc/modules/flyway/pages/about.adoc
index bb9a492..8ef804f 100644
--- a/extensions/core/flyway/adoc/modules/flyway/pages/about.adoc
+++ b/extensions/core/flyway/adoc/modules/flyway/pages/about.adoc
@@ -4,7 +4,7 @@
 
 This module provides an very thin layer to use Spring Boot's integration with https://flywaydb.org[Flyway]
 
-== Dependencies
+== Configuration
 
 Add the following dependency:
 
@@ -16,18 +16,47 @@ Add the following dependency:
 </dependency>
 ----
 
+Also add the following module to your `AppManifest`:
+
+[source,java]
+----
+@Configuration
+@Import({
+        // ...
+        IsisModuleExtFlywayImpl.class,
+        // ...
+})
+public static class AppManifest {
+}
+----
+
 This will enable Spring Boot's integration with Flyway, and configure Flyway to pick up JDBC connection parameters from the `application.properties` (corresponding to `IsisConfiguration` class).
 
+* `isis.persistence.jdo-datanucleus.impl.javax.jdo.option.ConnectionURL`
+* `isis.persistence.jdo-datanucleus.impl.javax.jdo.option.ConnectionDriverName`
+* `isis.persistence.jdo-datanucleus.impl.javax.jdo.option.ConnectionUserName`
+* `isis.persistence.jdo-datanucleus.impl.javax.jdo.option.ConnectionPassword`
+
 Currently, only the form of persistence properties recognised are those of the JDO DataNucleus object store:
 
-isis.persistence.jdo-datanucleus.impl.javax.jdo.option.ConnectionURL = jdbc:h2:mem:test
-isis.persistence.jdo-datanucleus.impl.javax.jdo.option.ConnectionDriverName = org.h2.Driver
-isis.persistence.jdo-datanucleus.impl.javax.jdo.option.ConnectionUserName = sa
-isis.persistence.jdo-datanucleus.impl.javax.jdo.option.ConnectionPassword =
+For backward compatibility with v1, Flyway will be automatically disabled if JDO's `autoCreateAll` option is set:
+
+* `isis.persistor.datanucleus.impl.datanucleus.schema.autoCreateAll`
+
+** If `true`, then flyway is disabled
+** If `false`, then flyway is enabled
+
+Flyway can also be explicitly disabled using the Spring Boot config property:
+
+* `spring.flyway.enabled`
 
+** If `false`, then flyway is disabled
+** If `true`, the flyway is enabled (provided also that `autoCreateAll` is set to `false`, see above)
 
 
+== Automatic schema setup
 
+TODO...
 
 == Reference
 
diff --git a/extensions/core/flyway/impl/pom.xml b/extensions/core/flyway/impl/pom.xml
index 629ae45..254566d 100644
--- a/extensions/core/flyway/impl/pom.xml
+++ b/extensions/core/flyway/impl/pom.xml
@@ -16,9 +16,8 @@
 
 	<parent>
 		<groupId>org.apache.isis.extensions</groupId>
-		<artifactId>isis-extensions</artifactId>
+		<artifactId>isis-extensions-flyway</artifactId>
 		<version>2.0.0-M3-SNAPSHOT</version>
-		<relativePath>../../../pom.xml</relativePath>
 	</parent>
 
 	<artifactId>isis-extensions-flyway-impl</artifactId>
@@ -48,6 +47,12 @@
 			<groupId>org.springframework.boot</groupId>
 			<artifactId>spring-boot-autoconfigure</artifactId>
 		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-jdbc</artifactId>
+		</dependency>
+
+
 	</dependencies>
 
 </project>
diff --git a/extensions/core/flyway/impl/src/main/java/org/apache/isis/extensions/flyway/impl/IsisModuleExtFlywayImpl.java b/extensions/core/flyway/impl/src/main/java/org/apache/isis/extensions/flyway/impl/IsisModuleExtFlywayImpl.java
index ca11a61..678275d 100644
--- a/extensions/core/flyway/impl/src/main/java/org/apache/isis/extensions/flyway/impl/IsisModuleExtFlywayImpl.java
+++ b/extensions/core/flyway/impl/src/main/java/org/apache/isis/extensions/flyway/impl/IsisModuleExtFlywayImpl.java
@@ -27,18 +27,18 @@ import org.springframework.context.annotation.Import;
 import org.apache.isis.core.config.IsisConfiguration;
 import org.apache.isis.core.config.IsisModuleCoreConfig;
 import org.apache.isis.extensions.flyway.impl.config.FlywayConfigurationCustomizerFromIsisConfiguration;
+import org.apache.isis.extensions.flyway.impl.config.FlywayMigrationStrategyForIsis;
 
 @Configuration
 @Import({
-        IsisModuleCoreConfig.class
+        // dependencies
+        IsisModuleCoreConfig.class,
+
+//        // @Component's
+        FlywayConfigurationCustomizerFromIsisConfiguration.class,
+//        FlywayMigrationStrategyForIsis.class,
 })
-@ComponentScan
 public class IsisModuleExtFlywayImpl {
 
-    @Bean
-    public FlywayConfigurationCustomizer flywayConfigurationCustomizer(final IsisConfiguration isisConfiguration) {
-        return new FlywayConfigurationCustomizerFromIsisConfiguration(isisConfiguration);
-    }
-
 
 }
diff --git a/extensions/core/flyway/impl/src/main/java/org/apache/isis/extensions/flyway/impl/config/FlywayConfigurationCustomizerFromIsisConfiguration.java b/extensions/core/flyway/impl/src/main/java/org/apache/isis/extensions/flyway/impl/config/FlywayConfigurationCustomizerFromIsisConfiguration.java
index f3b80c3..c270f4f 100644
--- a/extensions/core/flyway/impl/src/main/java/org/apache/isis/extensions/flyway/impl/config/FlywayConfigurationCustomizerFromIsisConfiguration.java
+++ b/extensions/core/flyway/impl/src/main/java/org/apache/isis/extensions/flyway/impl/config/FlywayConfigurationCustomizerFromIsisConfiguration.java
@@ -1,5 +1,7 @@
 package org.apache.isis.extensions.flyway.impl.config;
 
+import java.util.Properties;
+
 import javax.sql.DataSource;
 
 import org.flywaydb.core.api.configuration.FluentConfiguration;
@@ -10,12 +12,13 @@ import org.springframework.stereotype.Component;
 
 import org.apache.isis.applib.annotation.OrderPrecedence;
 import org.apache.isis.core.config.IsisConfiguration;
+import org.apache.isis.core.config.IsisConfiguration.Persistence.JdoDatanucleus.Impl.Javax.Jdo;
 
 import lombok.Value;
 import lombok.val;
 
 @Component
-@Order(OrderPrecedence.HIGH)
+@Order(OrderPrecedence.EARLY)
 public class FlywayConfigurationCustomizerFromIsisConfiguration implements FlywayConfigurationCustomizer {
 
     private final IsisConfiguration isisConfiguration;
@@ -27,47 +30,19 @@ public class FlywayConfigurationCustomizerFromIsisConfiguration implements Flywa
 
     @Override
     public void customize(final FluentConfiguration configuration) {
-        val params = obtainParams(isisConfiguration);
-        val datasource = params.createDatasource();
-
-        configuration.dataSource(datasource);
-    }
-
-    /**
-     * Searches for JDO connection params.
-     *
-     * <p>
-     *     In the future, could also search for JPA etc.
-     * </p>
-     */
-    private static JdbcConnectionParams obtainParams(final IsisConfiguration isisConfiguration) {
-
-        val javaxJdoOption = isisConfiguration.getPersistence().getJdoDatanucleus().getImpl().getJavax().getJdo().getOption();
-
-        val connectionDriverName = javaxJdoOption.getConnectionDriverName();
-        val connectionUrl = javaxJdoOption.getConnectionUrl();
-        val connectionUserName = javaxJdoOption.getConnectionUserName();
-        val connectionPassword = javaxJdoOption.getConnectionPassword();
 
-        return new JdbcConnectionParams(connectionDriverName, connectionUrl, connectionUserName, connectionPassword);
-    }
-
-    @Value
-    static class JdbcConnectionParams {
-        private final String connectionDriverName;
-        private final String connectionUrl;
-        private final String connectionUserName;
-        private final String connectionPassword;
-
-        public DataSource createDatasource() {
-            val dataSourceBuilder = DataSourceBuilder.create();
-            dataSourceBuilder.driverClassName(connectionDriverName);
-            dataSourceBuilder.url(connectionUrl);
-            dataSourceBuilder.username(connectionUserName);
-            dataSourceBuilder.password(connectionPassword);
-            return dataSourceBuilder.build();
+        final boolean autoCreate =
+                isisConfiguration.getPersistence().getJdoDatanucleus().getImpl().getDatanucleus().getSchema().isAutoCreateAll();
+        if (autoCreate) {
+            Properties props = new Properties();
+            props.setProperty("spring.flyway.enabled", "false");
+            configuration.configuration(props);
+            return;
         }
-    }
-
 
+//        // else
+//        JdbcConnectionParams.from(isisConfiguration)
+//                .map(JdbcConnectionParams::createDatasource)
+//                .ifPresent(configuration::dataSource);
+    }
 }
diff --git a/extensions/core/flyway/impl/src/main/java/org/apache/isis/extensions/flyway/impl/config/FlywayMigrationStrategyForIsis.java b/extensions/core/flyway/impl/src/main/java/org/apache/isis/extensions/flyway/impl/config/FlywayMigrationStrategyForIsis.java
new file mode 100644
index 0000000..47af679
--- /dev/null
+++ b/extensions/core/flyway/impl/src/main/java/org/apache/isis/extensions/flyway/impl/config/FlywayMigrationStrategyForIsis.java
@@ -0,0 +1,54 @@
+package org.apache.isis.extensions.flyway.impl.config;
+
+import java.util.Optional;
+import java.util.Properties;
+
+import javax.sql.DataSource;
+
+import org.flywaydb.core.Flyway;
+import org.springframework.boot.autoconfigure.flyway.FlywayMigrationStrategy;
+import org.springframework.core.annotation.Order;
+import org.springframework.stereotype.Component;
+
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.apache.isis.core.commons.internal.base._Strings;
+import org.apache.isis.core.config.IsisConfiguration;
+
+import lombok.val;
+
+@Component
+@Order(OrderPrecedence.EARLY)
+public class FlywayMigrationStrategyForIsis implements FlywayMigrationStrategy {
+
+    private final IsisConfiguration isisConfiguration;
+    private final Optional<JdbcConnectionParams> jdbcConnectionParams;
+
+    public FlywayMigrationStrategyForIsis(IsisConfiguration isisConfiguration) {
+        this.isisConfiguration = isisConfiguration;
+
+        org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType x;
+
+        final boolean autoCreate =
+                isisConfiguration.getPersistence().getJdoDatanucleus().getImpl().getDatanucleus().getSchema().isAutoCreateAll();
+        if(autoCreate) {
+            jdbcConnectionParams = Optional.empty();
+            return;
+        }
+
+        // else
+        jdbcConnectionParams = JdbcConnectionParams.from(isisConfiguration);
+    }
+
+
+    @Override
+    public void migrate(Flyway flyway) {
+        jdbcConnectionParams.ifPresent(
+                jdbcConnectionParams1 -> {
+                    jdbcConnectionParams1.createDatasource();
+                    flyway.migrate();
+                }
+        );
+    }
+
+
+}
diff --git a/extensions/core/flyway/impl/src/main/java/org/apache/isis/extensions/flyway/impl/config/JdbcConnectionParams.java b/extensions/core/flyway/impl/src/main/java/org/apache/isis/extensions/flyway/impl/config/JdbcConnectionParams.java
new file mode 100644
index 0000000..235eaef
--- /dev/null
+++ b/extensions/core/flyway/impl/src/main/java/org/apache/isis/extensions/flyway/impl/config/JdbcConnectionParams.java
@@ -0,0 +1,57 @@
+package org.apache.isis.extensions.flyway.impl.config;
+
+import java.util.Optional;
+
+import javax.sql.DataSource;
+
+import org.springframework.boot.jdbc.DataSourceBuilder;
+
+import org.apache.isis.core.commons.internal.base._Strings;
+import org.apache.isis.core.config.IsisConfiguration;
+
+import lombok.Value;
+import lombok.val;
+
+@Value
+class JdbcConnectionParams {
+
+    /**
+     * Searches for JDO connection params.
+     *
+     * <p>
+     *     In the future, could also search for JPA etc.
+     * </p>
+     */
+    static Optional<JdbcConnectionParams> from(final IsisConfiguration isisConfiguration) {
+
+        IsisConfiguration.Persistence.JdoDatanucleus.Impl.Javax.Jdo.Option javaxJdoOption =
+                isisConfiguration.getPersistence().getJdoDatanucleus().getImpl().getJavax().getJdo().getOption();
+
+        val connectionDriverName = javaxJdoOption.getConnectionDriverName();
+        val connectionUrl = javaxJdoOption.getConnectionUrl();
+        val connectionUserName = javaxJdoOption.getConnectionUserName();
+        val connectionPassword = javaxJdoOption.getConnectionPassword();
+
+        if(_Strings.isNullOrEmpty(connectionDriverName) ||
+                _Strings.isNullOrEmpty(connectionUrl) ||
+                _Strings.isNullOrEmpty(connectionUserName) ||
+                _Strings.isNullOrEmpty(connectionPassword)) {
+            return Optional.empty();
+        }
+        return Optional.of(new JdbcConnectionParams(connectionDriverName, connectionUrl, connectionUserName, connectionPassword));
+    }
+
+    private final String connectionDriverName;
+    private final String connectionUrl;
+    private final String connectionUserName;
+    private final String connectionPassword;
+
+    public DataSource createDatasource() {
+        val dataSourceBuilder = DataSourceBuilder.create();
+        dataSourceBuilder.driverClassName(connectionDriverName);
+        dataSourceBuilder.url(connectionUrl);
+        dataSourceBuilder.username(connectionUserName);
+        dataSourceBuilder.password(connectionPassword);
+        return dataSourceBuilder.build();
+    }
+}
diff --git a/extensions/pom.xml b/extensions/pom.xml
index 6aa9306..f0c4e2c 100644
--- a/extensions/pom.xml
+++ b/extensions/pom.xml
@@ -152,7 +152,7 @@
 	</dependencies>
 
 	<modules>
-		<module>core/flyway/impl</module>
+		<module>core/flyway</module>
 		<module>security/secman</module>
 		<module>security/shiro-realm-ldap</module>
 


[isis] 02/09: ISIS-2267: first-cut impl of FlywayDataSource

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

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

commit dde83e627959cebbfe5191783782502e345c6c9a
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Jan 20 10:46:20 2020 +0000

    ISIS-2267: first-cut impl of FlywayDataSource
---
 extensions/core/flyway/impl/pom.xml                | 26 +++++--
 .../flyway/impl/IsisModuleExtFlywayImpl.java       | 89 ++++++++++++++++++++++
 .../flywayjdo/dom/IsisModuleExtFlywayJdo.java      | 28 -------
 extensions/core/flyway/{impl => }/pom.xml          | 27 ++++---
 extensions/pom.xml                                 |  1 +
 5 files changed, 128 insertions(+), 43 deletions(-)

diff --git a/extensions/core/flyway/impl/pom.xml b/extensions/core/flyway/impl/pom.xml
index 10e4870..629ae45 100644
--- a/extensions/core/flyway/impl/pom.xml
+++ b/extensions/core/flyway/impl/pom.xml
@@ -21,17 +21,33 @@
 		<relativePath>../../../pom.xml</relativePath>
 	</parent>
 
-	<artifactId>isis-extensions-flywayjdo-dom</artifactId>
-	<name>Apache Isis Ext - FlywayJDO</name>
-	<description>Integrates FlywayDB when using JDO Object Store</description>
+	<artifactId>isis-extensions-flyway-impl</artifactId>
+	<name>Apache Isis Ext - Flyway Impl</name>
 
 	<properties>
-		<jar-plugin.automaticModuleName>org.apache.isis.extensions.flywayjdo.dom</jar-plugin.automaticModuleName>
-		<git-plugin.propertiesDir>org/apache/isis/extensions/flywayjdo/dom</git-plugin.propertiesDir>
+		<jar-plugin.automaticModuleName>org.apache.isis.extensions.flyway.impl</jar-plugin.automaticModuleName>
+		<git-plugin.propertiesDir>org/apache/isis/extensions/flyway/impl</git-plugin.propertiesDir>
 	</properties>
 
 	<dependencies>
+		<dependency>
+			<groupId>org.apache.isis.core</groupId>
+			<artifactId>isis-core-config</artifactId>
+		</dependency>
 
+		<dependency>
+			<groupId>org.flywaydb</groupId>
+			<artifactId>flyway-core</artifactId>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-context</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-autoconfigure</artifactId>
+		</dependency>
 	</dependencies>
 
 </project>
diff --git a/extensions/core/flyway/impl/src/main/java/org/apache/isis/extensions/flyway/impl/IsisModuleExtFlywayImpl.java b/extensions/core/flyway/impl/src/main/java/org/apache/isis/extensions/flyway/impl/IsisModuleExtFlywayImpl.java
new file mode 100644
index 0000000..90f3e76
--- /dev/null
+++ b/extensions/core/flyway/impl/src/main/java/org/apache/isis/extensions/flyway/impl/IsisModuleExtFlywayImpl.java
@@ -0,0 +1,89 @@
+/*
+ *  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.extensions.flyway.impl;
+
+import javax.sql.DataSource;
+
+import org.springframework.boot.autoconfigure.flyway.FlywayDataSource;
+import org.springframework.boot.jdbc.DataSourceBuilder;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+
+import org.apache.isis.core.config.IsisConfiguration;
+import org.apache.isis.core.config.IsisModuleCoreConfig;
+
+import lombok.Value;
+import lombok.val;
+
+@Configuration
+@Import({
+        IsisModuleCoreConfig.class
+})
+@ComponentScan
+public class IsisModuleExtFlywayImpl {
+
+    @Value
+    static class JdbcConnectionParams {
+        private final String connectionDriverName;
+        private final String connectionUrl;
+        private final String connectionUserName;
+        private final String connectionPassword;
+
+        public <T extends DataSource> DataSourceBuilder<T> configure(DataSourceBuilder<T> dataSourceBuilder) {
+            dataSourceBuilder.driverClassName(connectionDriverName);
+            dataSourceBuilder.url(connectionUrl);
+            dataSourceBuilder.username(connectionUserName);
+            dataSourceBuilder.password(connectionPassword);
+            return dataSourceBuilder;
+        }
+    }
+
+    @Bean
+    @FlywayDataSource
+    public DataSource getDataSource(final IsisConfiguration isisConfiguration) {
+
+        JdbcConnectionParams params = obtainParams(isisConfiguration);
+
+        val dataSourceBuilder = DataSourceBuilder.create();
+        params.configure(dataSourceBuilder);
+        return dataSourceBuilder.build();
+    }
+
+    /**
+     * Searches for JDO connection params.
+     *
+     * <p>
+     *     In the future, could also search for JPA etc.
+     * </p>
+     */
+    private static JdbcConnectionParams obtainParams(IsisConfiguration isisConfiguration) {
+
+        val javaxJdoOption = isisConfiguration.getPersistence().getJdoDatanucleus().getImpl().getJavax().getJdo().getOption();
+
+        val connectionDriverName = javaxJdoOption.getConnectionDriverName();
+        val connectionUrl = javaxJdoOption.getConnectionUrl();
+        val connectionUserName = javaxJdoOption.getConnectionUserName();
+        val connectionPassword = javaxJdoOption.getConnectionPassword();
+
+        return new JdbcConnectionParams(connectionDriverName, connectionUrl, connectionUserName, connectionPassword);
+    }
+
+}
diff --git a/extensions/core/flyway/impl/src/main/java/org/apache/isis/extensions/flywayjdo/dom/IsisModuleExtFlywayJdo.java b/extensions/core/flyway/impl/src/main/java/org/apache/isis/extensions/flywayjdo/dom/IsisModuleExtFlywayJdo.java
deleted file mode 100644
index 82920f6..0000000
--- a/extensions/core/flyway/impl/src/main/java/org/apache/isis/extensions/flywayjdo/dom/IsisModuleExtFlywayJdo.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- *  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.extensions.flywayjdo.dom;
-
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.Configuration;
-
-@Configuration
-@ComponentScan
-public class IsisModuleExtFlywayJdo {
-
-}
diff --git a/extensions/core/flyway/impl/pom.xml b/extensions/core/flyway/pom.xml
similarity index 69%
copy from extensions/core/flyway/impl/pom.xml
copy to extensions/core/flyway/pom.xml
index 10e4870..2f6bf9c 100644
--- a/extensions/core/flyway/impl/pom.xml
+++ b/extensions/core/flyway/pom.xml
@@ -18,20 +18,27 @@
 		<groupId>org.apache.isis.extensions</groupId>
 		<artifactId>isis-extensions</artifactId>
 		<version>2.0.0-M3-SNAPSHOT</version>
-		<relativePath>../../../pom.xml</relativePath>
+		<relativePath>../../pom.xml</relativePath>
 	</parent>
 
-	<artifactId>isis-extensions-flywayjdo-dom</artifactId>
-	<name>Apache Isis Ext - FlywayJDO</name>
-	<description>Integrates FlywayDB when using JDO Object Store</description>
+	<artifactId>isis-extensions-flyway</artifactId>
+	<name>Apache Isis Ext - Flyway</name>
+	<description>Integrates Flyway when using any (relational) persistence store</description>
 
-	<properties>
-		<jar-plugin.automaticModuleName>org.apache.isis.extensions.flywayjdo.dom</jar-plugin.automaticModuleName>
-		<git-plugin.propertiesDir>org/apache/isis/extensions/flywayjdo/dom</git-plugin.propertiesDir>
-	</properties>
+	<packaging>pom</packaging>
 
-	<dependencies>
+	<dependencyManagement>
+		<dependencies>
+			<dependency>
+				<groupId>org.flywaydb</groupId>
+				<artifactId>flyway-core</artifactId>
+				<version>${flyway.version}</version>
+			</dependency>
+		</dependencies>
+	</dependencyManagement>
 
-	</dependencies>
+	<modules>
+		<module>impl</module>
+	</modules>
 
 </project>
diff --git a/extensions/pom.xml b/extensions/pom.xml
index be16c86..469be76 100644
--- a/extensions/pom.xml
+++ b/extensions/pom.xml
@@ -146,6 +146,7 @@
 	</dependencies>
 
 	<modules>
+		<module>core/flyway/impl</module>
 		<module>security/secman</module>
 		<module>security/shiro-realm-ldap</module>
 


[isis] 06/09: ISIS-2267: fixes antora playbooks

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

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

commit 17697310033c88523221509f2f0046e5dca19ac6
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Jan 20 15:19:17 2020 +0000

    ISIS-2267: fixes antora playbooks
    
    now part of userguide, not refguide
---
 antora/playbooks/site-refguide.yml  | 4 ----
 antora/playbooks/site-userguide.yml | 8 ++++++--
 antora/playbooks/site.yml           | 2 +-
 3 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/antora/playbooks/site-refguide.yml b/antora/playbooks/site-refguide.yml
index 673e7f4..38db5e7 100644
--- a/antora/playbooks/site-refguide.yml
+++ b/antora/playbooks/site-refguide.yml
@@ -28,10 +28,6 @@ content:
       start_path: core/config/src/main/adoc # refguide
       branches: HEAD
 
-# extensions
-    - url: .
-      start_path: extensions/core/flyway/adoc # refguide
-      branches: HEAD
 
 
 ui:
diff --git a/antora/playbooks/site-userguide.yml b/antora/playbooks/site-userguide.yml
index d84f929..1742f8e 100644
--- a/antora/playbooks/site-userguide.yml
+++ b/antora/playbooks/site-userguide.yml
@@ -6,15 +6,19 @@ site:
 content:
   sources:
 
-# antora
+# antora/components
     - url: .
       start_path: antora/components/toc # toc
       branches: HEAD
-
     - url: .
       start_path: antora/components/userguide # userguide
       branches: HEAD
 
+# extensions
+    - url: .
+      start_path: extensions/core/flyway/adoc # refguide
+      branches: HEAD
+
 
 ui:
   bundle:
diff --git a/antora/playbooks/site.yml b/antora/playbooks/site.yml
index 0c7a399..e639893 100644
--- a/antora/playbooks/site.yml
+++ b/antora/playbooks/site.yml
@@ -104,7 +104,7 @@ content:
 
 # extensions
     - url: .
-      start_path: extensions/core/flyway/adoc # refguide
+      start_path: extensions/core/flyway/adoc # userguide
       branches: HEAD
 
     - url: .


[isis] 01/09: ISIS-2267: moves existing stub documents for flywayjdo to flyway, move under userguide.

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

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

commit 2670ee1aa2410a7c982f29b16c860d7601c3aa95
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Jan 20 10:25:26 2020 +0000

    ISIS-2267: moves existing stub documents for flywayjdo to flyway, move under userguide.
---
 .../modules/ROOT/partials/component-nav.adoc       |  2 +-
 .../refguide/modules/ROOT/partials/module-nav.adoc |  1 +
 .../userguide/modules/ROOT/pages/about.adoc        | 14 ++----------
 .../modules/ROOT/partials/component-nav.adoc       |  8 +++++++
 .../modules/ROOT/partials/module-nav.adoc          |  0
 antora/components/userguide/modules/btb/nav.adoc   |  9 +-------
 .../btb/{nav.adoc => partials/module-nav.adoc}     |  0
 antora/components/userguide/modules/fun/nav.adoc   | 25 +---------------------
 .../fun/{nav.adoc => partials/module-nav.adoc}     |  0
 antora/playbooks/site-refguide.yml                 |  5 +++++
 antora/playbooks/site.yml                          |  2 +-
 .../jdo/flywayjdo => core/flyway}/adoc/antora.yml  |  2 +-
 .../core/flyway/adoc/modules/flyway/nav.adoc       |  1 +
 .../flyway/adoc/modules/flyway}/pages/about.adoc   |  5 ++++-
 .../adoc/modules/flyway/partials/module-nav.adoc   |  3 +++
 .../jdo/flywayjdo => core/flyway}/impl/pom.xml     |  0
 .../flywayjdo/dom/IsisModuleExtFlywayJdo.java      |  0
 .../jdo/flywayjdo/adoc/modules/flywayjdo/nav.adoc  |  2 --
 .../modules/flywayjdo/partials/module-nav.adoc     |  3 ---
 19 files changed, 29 insertions(+), 53 deletions(-)

diff --git a/antora/components/refguide/modules/ROOT/partials/component-nav.adoc b/antora/components/refguide/modules/ROOT/partials/component-nav.adoc
index 5843a52..07389e3 100644
--- a/antora/components/refguide/modules/ROOT/partials/component-nav.adoc
+++ b/antora/components/refguide/modules/ROOT/partials/component-nav.adoc
@@ -3,4 +3,4 @@ include::refguide:applib-ant:partial$module-nav.adoc[]
 include::refguide:applib-svc:partial$module-nav.adoc[]
 include::refguide:applib-cm:partial$module-nav.adoc[]
 include::refguide:config:partial$module-nav.adoc[]
-include::refguide:schema:partial$module-nav.adoc[]
\ No newline at end of file
+include::refguide:schema:partial$module-nav.adoc[]
diff --git a/antora/components/refguide/modules/ROOT/partials/module-nav.adoc b/antora/components/refguide/modules/ROOT/partials/module-nav.adoc
index e69de29..283450e 100644
--- a/antora/components/refguide/modules/ROOT/partials/module-nav.adoc
+++ b/antora/components/refguide/modules/ROOT/partials/module-nav.adoc
@@ -0,0 +1 @@
+* Reference Guide
diff --git a/antora/components/userguide/modules/ROOT/pages/about.adoc b/antora/components/userguide/modules/ROOT/pages/about.adoc
index 75848d9..8910fbe 100644
--- a/antora/components/userguide/modules/ROOT/pages/about.adoc
+++ b/antora/components/userguide/modules/ROOT/pages/about.adoc
@@ -7,17 +7,7 @@ The user guide breaks into two main sections:
 * xref:userguide:fun:about.adoc[Fundamentals]
 * xref:userguide:btb:about.adoc[Beyond the Basics]
 
-There are a number of other guides:
-
-* xref:refguide:ROOT:about.adoc[Reference Guide]
-* xref:security:ROOT:about.adoc[Security Guide]
-* xref:testing:ROOT:about.adoc[Testing Guide]
-
-\... as well as components guides:
-
-* xref:vw:ROOT:about.adoc[Wicket viewer]
-* xref:vro:ROOT:about.adoc[Restful Objects viewer]
-* xref:pjdo:ROOT:about.adoc[DataNucleus object store]
-
+It also includes some extensions:
 
+* xref:userguide:flyway:about.adoc[Flyway]
 
diff --git a/antora/components/userguide/modules/ROOT/partials/component-nav.adoc b/antora/components/userguide/modules/ROOT/partials/component-nav.adoc
new file mode 100644
index 0000000..32bd5e9
--- /dev/null
+++ b/antora/components/userguide/modules/ROOT/partials/component-nav.adoc
@@ -0,0 +1,8 @@
+include::userguide:fun:partial$module-nav.adoc[]
+include::userguide:btb:partial$module-nav.adoc[]
+
+* Extensions
+
+include::refguide:flyway:partial$module-nav.adoc[]
+
+
diff --git a/antora/components/refguide/modules/ROOT/partials/module-nav.adoc b/antora/components/userguide/modules/ROOT/partials/module-nav.adoc
similarity index 100%
copy from antora/components/refguide/modules/ROOT/partials/module-nav.adoc
copy to antora/components/userguide/modules/ROOT/partials/module-nav.adoc
diff --git a/antora/components/userguide/modules/btb/nav.adoc b/antora/components/userguide/modules/btb/nav.adoc
index eacedee..dba32e5 100644
--- a/antora/components/userguide/modules/btb/nav.adoc
+++ b/antora/components/userguide/modules/btb/nav.adoc
@@ -1,8 +1 @@
-* xref:about.adoc[Beyond the Basics]
-
-** xref:i18n.adoc[i18n]
-** xref:headless-access.adoc[Headless Access]
-** xref:hints-and-tips.adoc[Hints-n-Tips]
-** xref:programming-model.adoc[Programming Model]
-** xref:deployment.adoc[Deployment]
-** xref:web-xml.adoc[web.xml]
+include::userguide:ROOT:partial$component-nav.adoc[]
diff --git a/antora/components/userguide/modules/btb/nav.adoc b/antora/components/userguide/modules/btb/partials/module-nav.adoc
similarity index 100%
copy from antora/components/userguide/modules/btb/nav.adoc
copy to antora/components/userguide/modules/btb/partials/module-nav.adoc
diff --git a/antora/components/userguide/modules/fun/nav.adoc b/antora/components/userguide/modules/fun/nav.adoc
index bfa3115..dba32e5 100644
--- a/antora/components/userguide/modules/fun/nav.adoc
+++ b/antora/components/userguide/modules/fun/nav.adoc
@@ -1,24 +1 @@
-* xref:about.adoc[Fundamentals]
-
-
-** xref:core-concepts.adoc[Core Concepts]
-
-** xref:userguide:fun:building-blocks.adoc[Building Blocks]
-
-** xref:programming-model.adoc[Programming Model]
-
-** xref:ui-hints.adoc[UI Hints]
-
-** xref:crud.adoc[CRUD]
-
-** xref:business-rules.adoc[Business Rules]
-
-** xref:drop-downs-and-defaults.adoc[Drop downs and Defaults]
-
-** xref:available-domain-services.adoc[Available Domain Services]
-
-
-
-
-
-
+include::userguide:ROOT:partial$component-nav.adoc[]
diff --git a/antora/components/userguide/modules/fun/nav.adoc b/antora/components/userguide/modules/fun/partials/module-nav.adoc
similarity index 100%
copy from antora/components/userguide/modules/fun/nav.adoc
copy to antora/components/userguide/modules/fun/partials/module-nav.adoc
diff --git a/antora/playbooks/site-refguide.yml b/antora/playbooks/site-refguide.yml
index 8157431..673e7f4 100644
--- a/antora/playbooks/site-refguide.yml
+++ b/antora/playbooks/site-refguide.yml
@@ -28,6 +28,11 @@ content:
       start_path: core/config/src/main/adoc # refguide
       branches: HEAD
 
+# extensions
+    - url: .
+      start_path: extensions/core/flyway/adoc # refguide
+      branches: HEAD
+
 
 ui:
   bundle:
diff --git a/antora/playbooks/site.yml b/antora/playbooks/site.yml
index dffc82a..0c7a399 100644
--- a/antora/playbooks/site.yml
+++ b/antora/playbooks/site.yml
@@ -104,7 +104,7 @@ content:
 
 # extensions
     - url: .
-      start_path: extensions/persistence/jdo/flywayjdo/adoc # extensions
+      start_path: extensions/core/flyway/adoc # refguide
       branches: HEAD
 
     - url: .
diff --git a/extensions/persistence/jdo/flywayjdo/adoc/antora.yml b/extensions/core/flyway/adoc/antora.yml
similarity index 50%
rename from extensions/persistence/jdo/flywayjdo/adoc/antora.yml
rename to extensions/core/flyway/adoc/antora.yml
index e805b25..b12174d 100644
--- a/extensions/persistence/jdo/flywayjdo/adoc/antora.yml
+++ b/extensions/core/flyway/adoc/antora.yml
@@ -1,2 +1,2 @@
-name: pjdo
+name: userguide
 version: master
diff --git a/extensions/core/flyway/adoc/modules/flyway/nav.adoc b/extensions/core/flyway/adoc/modules/flyway/nav.adoc
new file mode 100644
index 0000000..dba32e5
--- /dev/null
+++ b/extensions/core/flyway/adoc/modules/flyway/nav.adoc
@@ -0,0 +1 @@
+include::userguide:ROOT:partial$component-nav.adoc[]
diff --git a/extensions/persistence/jdo/flywayjdo/adoc/modules/flywayjdo/pages/about.adoc b/extensions/core/flyway/adoc/modules/flyway/pages/about.adoc
similarity index 77%
rename from extensions/persistence/jdo/flywayjdo/adoc/modules/flywayjdo/pages/about.adoc
rename to extensions/core/flyway/adoc/modules/flyway/pages/about.adoc
index 2dd682b..14b8bef 100644
--- a/extensions/persistence/jdo/flywayjdo/adoc/modules/flywayjdo/pages/about.adoc
+++ b/extensions/core/flyway/adoc/modules/flyway/pages/about.adoc
@@ -1,5 +1,8 @@
-= Flyway for JDO
+= Flyway (Extension)
 :Notice: 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 ag [...]
 
 TODO
 
+https://docs.spring.io/spring-boot/docs/current/reference/html/howto.html#howto-execute-flyway-database-migrations-on-startup
+
+https://www.baeldung.com/spring-boot-configure-data-source-programmatic
diff --git a/extensions/core/flyway/adoc/modules/flyway/partials/module-nav.adoc b/extensions/core/flyway/adoc/modules/flyway/partials/module-nav.adoc
new file mode 100644
index 0000000..8dc6c56
--- /dev/null
+++ b/extensions/core/flyway/adoc/modules/flyway/partials/module-nav.adoc
@@ -0,0 +1,3 @@
+** xref:userguide:flyway:about.adoc[Flyway (Extension)]
+
+
diff --git a/extensions/persistence/jdo/flywayjdo/impl/pom.xml b/extensions/core/flyway/impl/pom.xml
similarity index 100%
rename from extensions/persistence/jdo/flywayjdo/impl/pom.xml
rename to extensions/core/flyway/impl/pom.xml
diff --git a/extensions/persistence/jdo/flywayjdo/impl/src/main/java/org/apache/isis/extensions/flywayjdo/dom/IsisModuleExtFlywayJdo.java b/extensions/core/flyway/impl/src/main/java/org/apache/isis/extensions/flywayjdo/dom/IsisModuleExtFlywayJdo.java
similarity index 100%
rename from extensions/persistence/jdo/flywayjdo/impl/src/main/java/org/apache/isis/extensions/flywayjdo/dom/IsisModuleExtFlywayJdo.java
rename to extensions/core/flyway/impl/src/main/java/org/apache/isis/extensions/flywayjdo/dom/IsisModuleExtFlywayJdo.java
diff --git a/extensions/persistence/jdo/flywayjdo/adoc/modules/flywayjdo/nav.adoc b/extensions/persistence/jdo/flywayjdo/adoc/modules/flywayjdo/nav.adoc
deleted file mode 100644
index 4763d68..0000000
--- a/extensions/persistence/jdo/flywayjdo/adoc/modules/flywayjdo/nav.adoc
+++ /dev/null
@@ -1,2 +0,0 @@
-include::pjdo:ROOT:partial$component-nav.adoc[]
-
diff --git a/extensions/persistence/jdo/flywayjdo/adoc/modules/flywayjdo/partials/module-nav.adoc b/extensions/persistence/jdo/flywayjdo/adoc/modules/flywayjdo/partials/module-nav.adoc
deleted file mode 100644
index dd0d54b..0000000
--- a/extensions/persistence/jdo/flywayjdo/adoc/modules/flywayjdo/partials/module-nav.adoc
+++ /dev/null
@@ -1,3 +0,0 @@
-** xref:pjdo:flywayjdo:about.adoc[Flyway for JDO]
-
-


[isis] 09/09: ISIS-2267: more updates docs

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

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

commit 910c808518af4a0fdb81abf8f60a8c05a6cc2583
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Jan 20 17:47:00 2020 +0000

    ISIS-2267: more updates docs
---
 antora/components/extensions/modules/ROOT/partials/component-nav.adoc | 4 ++--
 antora/components/userguide/modules/ROOT/nav.adoc                     | 1 +
 antora/components/userguide/modules/ROOT/partials/component-nav.adoc  | 2 +-
 extensions/core/flyway/adoc/modules/flyway/pages/about.adoc           | 2 +-
 .../jdo/src/main/adoc/modules/ROOT/partials/component-nav.adoc        | 2 --
 5 files changed, 5 insertions(+), 6 deletions(-)

diff --git a/antora/components/extensions/modules/ROOT/partials/component-nav.adoc b/antora/components/extensions/modules/ROOT/partials/component-nav.adoc
index 0d5cc71..85bf24f 100644
--- a/antora/components/extensions/modules/ROOT/partials/component-nav.adoc
+++ b/antora/components/extensions/modules/ROOT/partials/component-nav.adoc
@@ -1,8 +1,8 @@
 include::extensions:ROOT:partial$module-nav.adoc[]
 
-* JDO Persistence
+* Core
 
-include::pjdo:flywayjdo:partial$module-nav.adoc[]
+include::userguide:flyway:partial$module-nav.adoc[]
 
 * Security
 include::security:shiro-realm-ldap:partial$module-nav.adoc[]
diff --git a/antora/components/userguide/modules/ROOT/nav.adoc b/antora/components/userguide/modules/ROOT/nav.adoc
index 8b13789..e34fb4b 100644
--- a/antora/components/userguide/modules/ROOT/nav.adoc
+++ b/antora/components/userguide/modules/ROOT/nav.adoc
@@ -1 +1,2 @@
+include::userguide:ROOT:partial$component-nav.adoc[]
 
diff --git a/antora/components/userguide/modules/ROOT/partials/component-nav.adoc b/antora/components/userguide/modules/ROOT/partials/component-nav.adoc
index 32bd5e9..f35ad96 100644
--- a/antora/components/userguide/modules/ROOT/partials/component-nav.adoc
+++ b/antora/components/userguide/modules/ROOT/partials/component-nav.adoc
@@ -3,6 +3,6 @@ include::userguide:btb:partial$module-nav.adoc[]
 
 * Extensions
 
-include::refguide:flyway:partial$module-nav.adoc[]
+include::userguide:flyway:partial$module-nav.adoc[]
 
 
diff --git a/extensions/core/flyway/adoc/modules/flyway/pages/about.adoc b/extensions/core/flyway/adoc/modules/flyway/pages/about.adoc
index d1877ec..f905c5d 100644
--- a/extensions/core/flyway/adoc/modules/flyway/pages/about.adoc
+++ b/extensions/core/flyway/adoc/modules/flyway/pages/about.adoc
@@ -60,7 +60,7 @@ In normal circumstances this is most easily peformed using with `autoCreateAll`
 If you want your tests to check your Flyway scripts beforehand, there is nothing to prevent you from using Flyway all the time, even for integration tests.
 
 One point to be aware of though is that the DDL syntax may vary between an in-memory database (such as H2) and a typical production database (such as PostgreSQL or SQL Server).
-Luckily, Spring Boot's Flyway integration allows different variants of scripts for different vendors to be stored, in `db.migration.{vendor}` package (where `{vendor}` is as defined by the https://github.com/spring-projects/spring-boot/blob/v2.2.3.RELEASE/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/jdbc/DatabaseDriver.java[DatabaseDriver] class).
+Luckily, Spring Boot's Flyway integration allows different variants of scripts for different vendors to be stored, in `+db.migration.{vendor}+` package (where `{vendor}` is as defined by the https://github.com/spring-projects/spring-boot/blob/v2.2.3.RELEASE/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/jdbc/DatabaseDriver.java[DatabaseDriver] class).
 The link:https://github.com/apache/isis-app-simpleapp[simpleapp starter app] also provides an example of this.
 
 
diff --git a/persistence/jdo/src/main/adoc/modules/ROOT/partials/component-nav.adoc b/persistence/jdo/src/main/adoc/modules/ROOT/partials/component-nav.adoc
index 6807b58..49c1365 100644
--- a/persistence/jdo/src/main/adoc/modules/ROOT/partials/component-nav.adoc
+++ b/persistence/jdo/src/main/adoc/modules/ROOT/partials/component-nav.adoc
@@ -1,4 +1,2 @@
 include::pjdo:ROOT:partial$module-nav.adoc[]
 
-* Extensions
-include::pjdo:flywayjdo:partial$module-nav.adoc[]


[isis] 03/09: ISIS-2267: wip

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

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

commit e60bd982043b4bbccef25aa81a1ed31dd1883ea1
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Jan 20 11:07:34 2020 +0000

    ISIS-2267: wip
---
 .../flyway/adoc/modules/flyway/pages/about.adoc    | 35 ++++++++++-
 .../flyway/impl/IsisModuleExtFlywayImpl.java       | 53 ++--------------
 ...nfigurationCustomizerFromIsisConfiguration.java | 73 ++++++++++++++++++++++
 extensions/pom.xml                                 |  6 ++
 4 files changed, 115 insertions(+), 52 deletions(-)

diff --git a/extensions/core/flyway/adoc/modules/flyway/pages/about.adoc b/extensions/core/flyway/adoc/modules/flyway/pages/about.adoc
index 14b8bef..bb9a492 100644
--- a/extensions/core/flyway/adoc/modules/flyway/pages/about.adoc
+++ b/extensions/core/flyway/adoc/modules/flyway/pages/about.adoc
@@ -1,8 +1,37 @@
 = Flyway (Extension)
 :Notice: 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 ag [...]
 
-TODO
 
-https://docs.spring.io/spring-boot/docs/current/reference/html/howto.html#howto-execute-flyway-database-migrations-on-startup
+This module provides an very thin layer to use Spring Boot's integration with https://flywaydb.org[Flyway]
 
-https://www.baeldung.com/spring-boot-configure-data-source-programmatic
+== Dependencies
+
+Add the following dependency:
+
+[source,xml]
+----
+<dependency>
+    <groupId>org.apache.isis.extensions</groupId>
+    <artifactId>isis-extensions-flyway-impl</artifactId>
+</dependency>
+----
+
+This will enable Spring Boot's integration with Flyway, and configure Flyway to pick up JDBC connection parameters from the `application.properties` (corresponding to `IsisConfiguration` class).
+
+Currently, only the form of persistence properties recognised are those of the JDO DataNucleus object store:
+
+isis.persistence.jdo-datanucleus.impl.javax.jdo.option.ConnectionURL = jdbc:h2:mem:test
+isis.persistence.jdo-datanucleus.impl.javax.jdo.option.ConnectionDriverName = org.h2.Driver
+isis.persistence.jdo-datanucleus.impl.javax.jdo.option.ConnectionUserName = sa
+isis.persistence.jdo-datanucleus.impl.javax.jdo.option.ConnectionPassword =
+
+
+
+
+
+== Reference
+
+See :
+
+* https://docs.spring.io/spring-boot/docs/current/reference/html/howto.html#howto-execute-flyway-database-migrations-on-startup[Spring Boot docs] for Flyway integration
+* https://www.baeldung.com/spring-boot-configure-data-source-programmatic[www.baeldung.com] docs on how to programmatically build a `DataSource`
diff --git a/extensions/core/flyway/impl/src/main/java/org/apache/isis/extensions/flyway/impl/IsisModuleExtFlywayImpl.java b/extensions/core/flyway/impl/src/main/java/org/apache/isis/extensions/flyway/impl/IsisModuleExtFlywayImpl.java
index 90f3e76..ca11a61 100644
--- a/extensions/core/flyway/impl/src/main/java/org/apache/isis/extensions/flyway/impl/IsisModuleExtFlywayImpl.java
+++ b/extensions/core/flyway/impl/src/main/java/org/apache/isis/extensions/flyway/impl/IsisModuleExtFlywayImpl.java
@@ -18,10 +18,7 @@
  */
 package org.apache.isis.extensions.flyway.impl;
 
-import javax.sql.DataSource;
-
-import org.springframework.boot.autoconfigure.flyway.FlywayDataSource;
-import org.springframework.boot.jdbc.DataSourceBuilder;
+import org.springframework.boot.autoconfigure.flyway.FlywayConfigurationCustomizer;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Configuration;
@@ -29,9 +26,7 @@ import org.springframework.context.annotation.Import;
 
 import org.apache.isis.core.config.IsisConfiguration;
 import org.apache.isis.core.config.IsisModuleCoreConfig;
-
-import lombok.Value;
-import lombok.val;
+import org.apache.isis.extensions.flyway.impl.config.FlywayConfigurationCustomizerFromIsisConfiguration;
 
 @Configuration
 @Import({
@@ -40,50 +35,10 @@ import lombok.val;
 @ComponentScan
 public class IsisModuleExtFlywayImpl {
 
-    @Value
-    static class JdbcConnectionParams {
-        private final String connectionDriverName;
-        private final String connectionUrl;
-        private final String connectionUserName;
-        private final String connectionPassword;
-
-        public <T extends DataSource> DataSourceBuilder<T> configure(DataSourceBuilder<T> dataSourceBuilder) {
-            dataSourceBuilder.driverClassName(connectionDriverName);
-            dataSourceBuilder.url(connectionUrl);
-            dataSourceBuilder.username(connectionUserName);
-            dataSourceBuilder.password(connectionPassword);
-            return dataSourceBuilder;
-        }
-    }
-
     @Bean
-    @FlywayDataSource
-    public DataSource getDataSource(final IsisConfiguration isisConfiguration) {
-
-        JdbcConnectionParams params = obtainParams(isisConfiguration);
-
-        val dataSourceBuilder = DataSourceBuilder.create();
-        params.configure(dataSourceBuilder);
-        return dataSourceBuilder.build();
+    public FlywayConfigurationCustomizer flywayConfigurationCustomizer(final IsisConfiguration isisConfiguration) {
+        return new FlywayConfigurationCustomizerFromIsisConfiguration(isisConfiguration);
     }
 
-    /**
-     * Searches for JDO connection params.
-     *
-     * <p>
-     *     In the future, could also search for JPA etc.
-     * </p>
-     */
-    private static JdbcConnectionParams obtainParams(IsisConfiguration isisConfiguration) {
-
-        val javaxJdoOption = isisConfiguration.getPersistence().getJdoDatanucleus().getImpl().getJavax().getJdo().getOption();
-
-        val connectionDriverName = javaxJdoOption.getConnectionDriverName();
-        val connectionUrl = javaxJdoOption.getConnectionUrl();
-        val connectionUserName = javaxJdoOption.getConnectionUserName();
-        val connectionPassword = javaxJdoOption.getConnectionPassword();
-
-        return new JdbcConnectionParams(connectionDriverName, connectionUrl, connectionUserName, connectionPassword);
-    }
 
 }
diff --git a/extensions/core/flyway/impl/src/main/java/org/apache/isis/extensions/flyway/impl/config/FlywayConfigurationCustomizerFromIsisConfiguration.java b/extensions/core/flyway/impl/src/main/java/org/apache/isis/extensions/flyway/impl/config/FlywayConfigurationCustomizerFromIsisConfiguration.java
new file mode 100644
index 0000000..f3b80c3
--- /dev/null
+++ b/extensions/core/flyway/impl/src/main/java/org/apache/isis/extensions/flyway/impl/config/FlywayConfigurationCustomizerFromIsisConfiguration.java
@@ -0,0 +1,73 @@
+package org.apache.isis.extensions.flyway.impl.config;
+
+import javax.sql.DataSource;
+
+import org.flywaydb.core.api.configuration.FluentConfiguration;
+import org.springframework.boot.autoconfigure.flyway.FlywayConfigurationCustomizer;
+import org.springframework.boot.jdbc.DataSourceBuilder;
+import org.springframework.core.annotation.Order;
+import org.springframework.stereotype.Component;
+
+import org.apache.isis.applib.annotation.OrderPrecedence;
+import org.apache.isis.core.config.IsisConfiguration;
+
+import lombok.Value;
+import lombok.val;
+
+@Component
+@Order(OrderPrecedence.HIGH)
+public class FlywayConfigurationCustomizerFromIsisConfiguration implements FlywayConfigurationCustomizer {
+
+    private final IsisConfiguration isisConfiguration;
+
+    public FlywayConfigurationCustomizerFromIsisConfiguration(
+            final IsisConfiguration isisConfiguration) {
+        this.isisConfiguration = isisConfiguration;
+    }
+
+    @Override
+    public void customize(final FluentConfiguration configuration) {
+        val params = obtainParams(isisConfiguration);
+        val datasource = params.createDatasource();
+
+        configuration.dataSource(datasource);
+    }
+
+    /**
+     * Searches for JDO connection params.
+     *
+     * <p>
+     *     In the future, could also search for JPA etc.
+     * </p>
+     */
+    private static JdbcConnectionParams obtainParams(final IsisConfiguration isisConfiguration) {
+
+        val javaxJdoOption = isisConfiguration.getPersistence().getJdoDatanucleus().getImpl().getJavax().getJdo().getOption();
+
+        val connectionDriverName = javaxJdoOption.getConnectionDriverName();
+        val connectionUrl = javaxJdoOption.getConnectionUrl();
+        val connectionUserName = javaxJdoOption.getConnectionUserName();
+        val connectionPassword = javaxJdoOption.getConnectionPassword();
+
+        return new JdbcConnectionParams(connectionDriverName, connectionUrl, connectionUserName, connectionPassword);
+    }
+
+    @Value
+    static class JdbcConnectionParams {
+        private final String connectionDriverName;
+        private final String connectionUrl;
+        private final String connectionUserName;
+        private final String connectionPassword;
+
+        public DataSource createDatasource() {
+            val dataSourceBuilder = DataSourceBuilder.create();
+            dataSourceBuilder.driverClassName(connectionDriverName);
+            dataSourceBuilder.url(connectionUrl);
+            dataSourceBuilder.username(connectionUserName);
+            dataSourceBuilder.password(connectionPassword);
+            return dataSourceBuilder.build();
+        }
+    }
+
+
+}
diff --git a/extensions/pom.xml b/extensions/pom.xml
index 469be76..6aa9306 100644
--- a/extensions/pom.xml
+++ b/extensions/pom.xml
@@ -70,6 +70,12 @@
 
 			<dependency>
 				<groupId>org.apache.isis.extensions</groupId>
+				<artifactId>isis-extensions-flyway-impl</artifactId>
+				<version>2.0.0-M3-SNAPSHOT</version>
+			</dependency>
+
+			<dependency>
+				<groupId>org.apache.isis.extensions</groupId>
 				<artifactId>isis-extensions-pdfjs-applib</artifactId>
 				<version>2.0.0-M3-SNAPSHOT</version>
 			</dependency>


[isis] 05/09: ISIS-2267: updates docs, simplifies implementation.

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

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

commit 0b139ea3c5819d0a83d623a4fce467c9563bd98f
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Jan 20 15:12:10 2020 +0000

    ISIS-2267: updates docs, simplifies implementation.
---
 .../flyway/adoc/modules/flyway/pages/about.adoc    | 62 ++++++++++++++--------
 extensions/core/flyway/impl/pom.xml                |  1 -
 .../flyway/impl/IsisModuleExtFlywayImpl.java       | 10 ----
 ...nfigurationCustomizerFromIsisConfiguration.java | 48 -----------------
 .../config/FlywayMigrationStrategyForIsis.java     | 54 -------------------
 .../flyway/impl/config/JdbcConnectionParams.java   | 57 --------------------
 6 files changed, 40 insertions(+), 192 deletions(-)

diff --git a/extensions/core/flyway/adoc/modules/flyway/pages/about.adoc b/extensions/core/flyway/adoc/modules/flyway/pages/about.adoc
index 8ef804f..d1877ec 100644
--- a/extensions/core/flyway/adoc/modules/flyway/pages/about.adoc
+++ b/extensions/core/flyway/adoc/modules/flyway/pages/about.adoc
@@ -1,7 +1,6 @@
 = Flyway (Extension)
 :Notice: 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 ag [...]
 
-
 This module provides an very thin layer to use Spring Boot's integration with https://flywaydb.org[Flyway]
 
 == Configuration
@@ -22,45 +21,64 @@ Also add the following module to your `AppManifest`:
 ----
 @Configuration
 @Import({
-        // ...
-        IsisModuleExtFlywayImpl.class,
-        // ...
+    // ...
+    IsisModuleExtFlywayImpl.class,
+    // ...
 })
 public static class AppManifest {
 }
 ----
 
-This will enable Spring Boot's integration with Flyway, and configure Flyway to pick up JDBC connection parameters from the `application.properties` (corresponding to `IsisConfiguration` class).
+Also configure Flyway connection parameters to use those of JDO DataNucleus object store:
 
-* `isis.persistence.jdo-datanucleus.impl.javax.jdo.option.ConnectionURL`
-* `isis.persistence.jdo-datanucleus.impl.javax.jdo.option.ConnectionDriverName`
-* `isis.persistence.jdo-datanucleus.impl.javax.jdo.option.ConnectionUserName`
-* `isis.persistence.jdo-datanucleus.impl.javax.jdo.option.ConnectionPassword`
+[source,properties]
+.application.properties
+----
+spring.flyway.url=\
+  ${isis.persistence.jdo-datanucleus.impl.javax.jdo.option.ConnectionURL}
+spring.flyway.user=\
+  ${isis.persistence.jdo-datanucleus.impl.javax.jdo.option.ConnectionUserName}
+spring.flyway.password=\
+  ${isis.persistence.jdo-datanucleus.impl.javax.jdo.option.ConnectionPassword}
+----
 
-Currently, only the form of persistence properties recognised are those of the JDO DataNucleus object store:
+If Flyway is enabled, then `autoCreateAll` should also be disabled:
 
-For backward compatibility with v1, Flyway will be automatically disabled if JDO's `autoCreateAll` option is set:
+[source,properties]
+.application.properties
+----
+spring.flyway.enabled=true
+isis.persistence.jdo-datanucleus.impl.datanucleus.schema.autoCreateAll=false
+----
 
-* `isis.persistor.datanucleus.impl.datanucleus.schema.autoCreateAll`
 
-** If `true`, then flyway is disabled
-** If `false`, then flyway is enabled
+== Using in-memory object stores
 
-Flyway can also be explicitly disabled using the Spring Boot config property:
+When running with an in-memory object store - either for prototyping or integration tests - you will need the database tables to be created first.
 
-* `spring.flyway.enabled`
+In normal circumstances this is most easily peformed using with `autoCreateAll` enabled (and Flyway disabled).
+If you want your tests to check your Flyway scripts beforehand, there is nothing to prevent you from using Flyway all the time, even for integration tests.
 
-** If `false`, then flyway is disabled
-** If `true`, the flyway is enabled (provided also that `autoCreateAll` is set to `false`, see above)
+One point to be aware of though is that the DDL syntax may vary between an in-memory database (such as H2) and a typical production database (such as PostgreSQL or SQL Server).
+Luckily, Spring Boot's Flyway integration allows different variants of scripts for different vendors to be stored, in `db.migration.{vendor}` package (where `{vendor}` is as defined by the https://github.com/spring-projects/spring-boot/blob/v2.2.3.RELEASE/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/jdbc/DatabaseDriver.java[DatabaseDriver] class).
+The link:https://github.com/apache/isis-app-simpleapp[simpleapp starter app] also provides an example of this.
 
 
-== Automatic schema setup
+=== Custom schemas
 
-TODO...
+In some circumstances DataNucleus -- when running with `autoCreateAll` enabled -- has been known to not create the prerequisite schema objects.
 
-== Reference
+If this occurs, consider enabling Flyway for in-memory tests, and then use a custom value of `spring.flyway.locations` property to pick up the custom schema files:
 
-See :
+[source,properties]
+----
+spring.flyway.locations=classpath:db/migration/custom-schema
+----
+
+This property could be configured for example using `@TestPropertySource`, or `@ActiveProfile`.
+
+
+== Reference
 
 * https://docs.spring.io/spring-boot/docs/current/reference/html/howto.html#howto-execute-flyway-database-migrations-on-startup[Spring Boot docs] for Flyway integration
 * https://www.baeldung.com/spring-boot-configure-data-source-programmatic[www.baeldung.com] docs on how to programmatically build a `DataSource`
diff --git a/extensions/core/flyway/impl/pom.xml b/extensions/core/flyway/impl/pom.xml
index 254566d..57ef1c6 100644
--- a/extensions/core/flyway/impl/pom.xml
+++ b/extensions/core/flyway/impl/pom.xml
@@ -52,7 +52,6 @@
 			<artifactId>spring-jdbc</artifactId>
 		</dependency>
 
-
 	</dependencies>
 
 </project>
diff --git a/extensions/core/flyway/impl/src/main/java/org/apache/isis/extensions/flyway/impl/IsisModuleExtFlywayImpl.java b/extensions/core/flyway/impl/src/main/java/org/apache/isis/extensions/flyway/impl/IsisModuleExtFlywayImpl.java
index 678275d..7ceb1d8 100644
--- a/extensions/core/flyway/impl/src/main/java/org/apache/isis/extensions/flyway/impl/IsisModuleExtFlywayImpl.java
+++ b/extensions/core/flyway/impl/src/main/java/org/apache/isis/extensions/flyway/impl/IsisModuleExtFlywayImpl.java
@@ -26,18 +26,8 @@ import org.springframework.context.annotation.Import;
 
 import org.apache.isis.core.config.IsisConfiguration;
 import org.apache.isis.core.config.IsisModuleCoreConfig;
-import org.apache.isis.extensions.flyway.impl.config.FlywayConfigurationCustomizerFromIsisConfiguration;
-import org.apache.isis.extensions.flyway.impl.config.FlywayMigrationStrategyForIsis;
 
 @Configuration
-@Import({
-        // dependencies
-        IsisModuleCoreConfig.class,
-
-//        // @Component's
-        FlywayConfigurationCustomizerFromIsisConfiguration.class,
-//        FlywayMigrationStrategyForIsis.class,
-})
 public class IsisModuleExtFlywayImpl {
 
 
diff --git a/extensions/core/flyway/impl/src/main/java/org/apache/isis/extensions/flyway/impl/config/FlywayConfigurationCustomizerFromIsisConfiguration.java b/extensions/core/flyway/impl/src/main/java/org/apache/isis/extensions/flyway/impl/config/FlywayConfigurationCustomizerFromIsisConfiguration.java
deleted file mode 100644
index c270f4f..0000000
--- a/extensions/core/flyway/impl/src/main/java/org/apache/isis/extensions/flyway/impl/config/FlywayConfigurationCustomizerFromIsisConfiguration.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package org.apache.isis.extensions.flyway.impl.config;
-
-import java.util.Properties;
-
-import javax.sql.DataSource;
-
-import org.flywaydb.core.api.configuration.FluentConfiguration;
-import org.springframework.boot.autoconfigure.flyway.FlywayConfigurationCustomizer;
-import org.springframework.boot.jdbc.DataSourceBuilder;
-import org.springframework.core.annotation.Order;
-import org.springframework.stereotype.Component;
-
-import org.apache.isis.applib.annotation.OrderPrecedence;
-import org.apache.isis.core.config.IsisConfiguration;
-import org.apache.isis.core.config.IsisConfiguration.Persistence.JdoDatanucleus.Impl.Javax.Jdo;
-
-import lombok.Value;
-import lombok.val;
-
-@Component
-@Order(OrderPrecedence.EARLY)
-public class FlywayConfigurationCustomizerFromIsisConfiguration implements FlywayConfigurationCustomizer {
-
-    private final IsisConfiguration isisConfiguration;
-
-    public FlywayConfigurationCustomizerFromIsisConfiguration(
-            final IsisConfiguration isisConfiguration) {
-        this.isisConfiguration = isisConfiguration;
-    }
-
-    @Override
-    public void customize(final FluentConfiguration configuration) {
-
-        final boolean autoCreate =
-                isisConfiguration.getPersistence().getJdoDatanucleus().getImpl().getDatanucleus().getSchema().isAutoCreateAll();
-        if (autoCreate) {
-            Properties props = new Properties();
-            props.setProperty("spring.flyway.enabled", "false");
-            configuration.configuration(props);
-            return;
-        }
-
-//        // else
-//        JdbcConnectionParams.from(isisConfiguration)
-//                .map(JdbcConnectionParams::createDatasource)
-//                .ifPresent(configuration::dataSource);
-    }
-}
diff --git a/extensions/core/flyway/impl/src/main/java/org/apache/isis/extensions/flyway/impl/config/FlywayMigrationStrategyForIsis.java b/extensions/core/flyway/impl/src/main/java/org/apache/isis/extensions/flyway/impl/config/FlywayMigrationStrategyForIsis.java
deleted file mode 100644
index 47af679..0000000
--- a/extensions/core/flyway/impl/src/main/java/org/apache/isis/extensions/flyway/impl/config/FlywayMigrationStrategyForIsis.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package org.apache.isis.extensions.flyway.impl.config;
-
-import java.util.Optional;
-import java.util.Properties;
-
-import javax.sql.DataSource;
-
-import org.flywaydb.core.Flyway;
-import org.springframework.boot.autoconfigure.flyway.FlywayMigrationStrategy;
-import org.springframework.core.annotation.Order;
-import org.springframework.stereotype.Component;
-
-import org.apache.isis.applib.annotation.OrderPrecedence;
-import org.apache.isis.core.commons.internal.base._Strings;
-import org.apache.isis.core.config.IsisConfiguration;
-
-import lombok.val;
-
-@Component
-@Order(OrderPrecedence.EARLY)
-public class FlywayMigrationStrategyForIsis implements FlywayMigrationStrategy {
-
-    private final IsisConfiguration isisConfiguration;
-    private final Optional<JdbcConnectionParams> jdbcConnectionParams;
-
-    public FlywayMigrationStrategyForIsis(IsisConfiguration isisConfiguration) {
-        this.isisConfiguration = isisConfiguration;
-
-        org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType x;
-
-        final boolean autoCreate =
-                isisConfiguration.getPersistence().getJdoDatanucleus().getImpl().getDatanucleus().getSchema().isAutoCreateAll();
-        if(autoCreate) {
-            jdbcConnectionParams = Optional.empty();
-            return;
-        }
-
-        // else
-        jdbcConnectionParams = JdbcConnectionParams.from(isisConfiguration);
-    }
-
-
-    @Override
-    public void migrate(Flyway flyway) {
-        jdbcConnectionParams.ifPresent(
-                jdbcConnectionParams1 -> {
-                    jdbcConnectionParams1.createDatasource();
-                    flyway.migrate();
-                }
-        );
-    }
-
-
-}
diff --git a/extensions/core/flyway/impl/src/main/java/org/apache/isis/extensions/flyway/impl/config/JdbcConnectionParams.java b/extensions/core/flyway/impl/src/main/java/org/apache/isis/extensions/flyway/impl/config/JdbcConnectionParams.java
deleted file mode 100644
index 235eaef..0000000
--- a/extensions/core/flyway/impl/src/main/java/org/apache/isis/extensions/flyway/impl/config/JdbcConnectionParams.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package org.apache.isis.extensions.flyway.impl.config;
-
-import java.util.Optional;
-
-import javax.sql.DataSource;
-
-import org.springframework.boot.jdbc.DataSourceBuilder;
-
-import org.apache.isis.core.commons.internal.base._Strings;
-import org.apache.isis.core.config.IsisConfiguration;
-
-import lombok.Value;
-import lombok.val;
-
-@Value
-class JdbcConnectionParams {
-
-    /**
-     * Searches for JDO connection params.
-     *
-     * <p>
-     *     In the future, could also search for JPA etc.
-     * </p>
-     */
-    static Optional<JdbcConnectionParams> from(final IsisConfiguration isisConfiguration) {
-
-        IsisConfiguration.Persistence.JdoDatanucleus.Impl.Javax.Jdo.Option javaxJdoOption =
-                isisConfiguration.getPersistence().getJdoDatanucleus().getImpl().getJavax().getJdo().getOption();
-
-        val connectionDriverName = javaxJdoOption.getConnectionDriverName();
-        val connectionUrl = javaxJdoOption.getConnectionUrl();
-        val connectionUserName = javaxJdoOption.getConnectionUserName();
-        val connectionPassword = javaxJdoOption.getConnectionPassword();
-
-        if(_Strings.isNullOrEmpty(connectionDriverName) ||
-                _Strings.isNullOrEmpty(connectionUrl) ||
-                _Strings.isNullOrEmpty(connectionUserName) ||
-                _Strings.isNullOrEmpty(connectionPassword)) {
-            return Optional.empty();
-        }
-        return Optional.of(new JdbcConnectionParams(connectionDriverName, connectionUrl, connectionUserName, connectionPassword));
-    }
-
-    private final String connectionDriverName;
-    private final String connectionUrl;
-    private final String connectionUserName;
-    private final String connectionPassword;
-
-    public DataSource createDatasource() {
-        val dataSourceBuilder = DataSourceBuilder.create();
-        dataSourceBuilder.driverClassName(connectionDriverName);
-        dataSourceBuilder.url(connectionUrl);
-        dataSourceBuilder.username(connectionUserName);
-        dataSourceBuilder.password(connectionPassword);
-        return dataSourceBuilder.build();
-    }
-}