2016-12-08 27 views
1

我目前正在为Liquibase创建一个扩展来支持Cassandra。它工作得很好,但我想添加一些不错的功能。覆盖Liquibase中的现有先决条件

当变更集有一个先决条件时,我想抛出类似NotSuppportedException()或类似的东西。问题是,目前底层的JDBC封装器返回一个关闭的ResultSet,导致访问所述ResultSet时引发异常。

对于陈述,我实现了我自己的发电机。前提条件是否有类似的情况?或者重写现有的ForeignKeyExistsPrecondition实现的方法?从类延伸并覆盖检查方法不起作用(即使置于包liquibase.precondition.ext中)。

谢谢!

+0

大多数前提条件似乎都使用SqlStatements,如果您实现了自己的数据库类,那么您可能只是不支持这些语句? – dag

+0

是的,谢谢,这将工作,如果ForeignKeyPrecondition使用SqlStatement,但它使用的SnapshotGeneratorFactory,我很遗憾不能覆盖 – N4zroth

+0

好吧,我看到,该先决条件没有优先级像变化,我不知道会发生什么使用相同的tagName注册自定义类时的PreconditionFactory。你尝试过吗?似乎前提条件工厂不检查已经注册的标签,但只是覆盖已经注册的类。 – dag

回答

0

这似乎工作的唯一方法(感谢@dag)使用与我想覆盖的前提条件完全相同的FQDN。

+0

虽然这可能工作,我发现这当然不是一个完美的解决方案 - 取决于类加载器这可能会或可能不会工作。我打开新的想法:( – N4zroth