2016-12-08 3 views
1

В настоящее время я создаю расширение для Liquibase для поддержки Cassandra. Он работает очень хорошо, но я хочу добавить некоторые полезные функции.Переопределить существующее предварительное условие в Liquibase

Если у набора изменений есть предварительное условие, я хочу бросить что-то вроде NotSuppportedException() или что-то еще. Проблема в том, что в настоящее время базовая оболочка JDBC возвращает закрытый ResultSet, который приводит к тому, что Исключение выбрасывается при доступе к указанному ResultSet.

Для заявлений я реализовал свои собственные генераторы. Есть ли аналогичная предпосылка для предусловий? Или способ переопределить существующую реализацию ForeignKeyExistsPrecondition? Расширение от класса и переопределение метода проверки не работает (даже если оно помещено в пакет linibase.precondition.ext).

Спасибо!

+0

Большинство предварительных условий, по-видимому, используют SqlStatements, если вы внедрили свой собственный класс базы данных, вы можете просто не поддерживать эти утверждения? – dag

+0

Да, спасибо, это сработает, если ForeignKeyPrecondition использует SqlStatement, но использует SnapshotGeneratorFactory, который, к сожалению, не могу переопределить – N4zroth

+0

Хорошо, и я вижу, что эти предпосылки не имеют приоритета, как изменения, и я не уверен, что происходит в PreconditionFactory при регистрации пользовательского класса с тем же именем тега. Вы попробовали это? Кажется, preconditionFactory не проверяет уже зарегистрированные теги, а просто переопределяет уже зарегистрированные классы. – dag

ответ

0

Единственный способ, с которым это работает (благодаря @dag), использовать то же полное FQDN, что и Условие, которое я хочу переопределить.

+0

Хотя это может сработать, я узнал, что это, конечно, не идеальное решение - в зависимости от загрузчика классов это может работать или не работать. Я открыт для новых идей :( – N4zroth

Смежные вопросы