You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@isis.apache.org by "Dan Haywood (JIRA)" <ji...@apache.org> on 2016/07/19 11:23:20 UTC

[jira] [Created] (ISIS-1471) Integrate Flyway or Liquibase or something similar

Dan Haywood created ISIS-1471:
---------------------------------

             Summary: Integrate Flyway or Liquibase or something similar
                 Key: ISIS-1471
                 URL: https://issues.apache.org/jira/browse/ISIS-1471
             Project: Isis
          Issue Type: New Feature
          Components: Core
    Affects Versions: 1.13.0
            Reporter: Dan Haywood
            Assignee: Dan Haywood
             Fix For: 1.14.0


from Kambiz:

Hi,

in our non-Isis projects, we use FlyWay [1] for DB migrations and I
would like to integrate it into our Isis workflow. The simplest path to
do so would be a DomainService with a PostConstruct annotated init
method:

@PostConstruct
public void init(final Map<String, String> properties) {
    Flyway flyway = new Flyway();

    // Point it to the database
    String jdbcUrl = properties.get("isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionURL");
    String user = properties.get("isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionUserName");
    String password = properties.get("isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionPassword");

    flyway.setDataSource(jdbcUrl, user, password);
    flyway.setLocations("classpath:db/migrations");
    // Start the migration
    flyway.migrate();
}


but this isn't a viable solution, as IsisSessionFactoryBuilder's
buildSessionFactory() method initialises the DataNucleus (DN)
PersistenceSessionFactory before the services are constructed [2].

So DN has already found the mismatch between the JDO annotations and the
database before we enter the init method of our DB migration
bootstrap/seed service.

I could contribute a patch, if someone could hint on the preferred way
of implementing the functionality.

Thank you


Kambiz


[1] https://flywaydb.org/

[2] https://github.com/apache/isis/blob/master/core/runtime/src/main/java/org/apache/isis/core/runtime/system/session/IsisSessionFactoryBuilder.java#L184






--
This message was sent by Atlassian JIRA
(v6.3.4#6332)