2016-12-08 24 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