Круглые скобки и запятая в контексте Liquibase - PullRequest
0 голосов
/ 08 мая 2018

Можно ли смешивать () и в атрибуте контекста ликвидности?

<changeSet id="xxx" author="mhz" context="(c1 or c2 or c3 or c4) and blackbox-test" >

у меня отлично работает. Однако, если я использую более компактную форму

<changeSet id="xxx" author="mhz" context="(c1,c2,c3,c4) and blackbox-test" >

Я получаю Неожиданная ошибка при запуске Liquibase: невозможно проанализировать шаблон контекста (c1 .

Я использую Liquibase 3.5.1.

1 Ответ

0 голосов
/ 08 мая 2018

Я просто grep'ed текущий исходный код и класс ContextExpression, откуда приходит это сообщение. Вот блок кода :

while (expression.contains("(")) {
    Pattern pattern = Pattern.compile("(.*?)\\((.*?)\\)(.*)");
    Matcher matcher = pattern.matcher(expression);
    if (!matcher.matches()) {
        throw new UnexpectedLiquibaseException("Cannot parse context pattern "+expression);
    }
    String parenExpression = matcher.group(2);

    parenExpression = ":"+String.valueOf(matches(parenExpression, runtimeContexts)).toUpperCase();

    expression = matcher.group(1)+" "+parenExpression+" "+matcher.group(3);
}

В сообщении об ошибке, которое вы включили, указано Unexpected error running Liquibase: Cannot parse context pattern (c1. с точкой после c1, что странно, поскольку в строке входных данных (которая в этом блоке кода expression) нет точки.

Есть некоторые тесты и для этого класса , но я не вижу ничего, что бы охватывало ваш пример.

...