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)