camel weaveAddLast () в before () добавит много копий, не очень хорошо - PullRequest
1 голос
/ 04 марта 2020

Я первый, кто наткнулся на это? Есть ли способ, которым я наблюдал, чтобы сбросить загруженный контекст без написания слишком большого количества кода?

Проблема:

@Before
public void before() throws Exception {
    context.getRouteDefinition(MyRoute.ID).adviceWith(context, new AdviceWithRouteBuilder() {
        @Override
        public void configure() throws Exception {
            weaveAddLast().to("seda:endjob");
        }
    });
}
@Test
public void testOne(){}
@Test
public void testTwo(){}

добавит конечную точку seda: endjob ДВАЖДЫ - по одному для каждого @Test, потому что @Before будет вызываться перед каждым. Так что это имеет смысл, но я определенно ненавижу это! ВСЕ примеры, которые я смог найти, либо имеют только один @Test (не проблема), либо выполняйте тест INSIDE, который снова устраняет проблему (но повторяет код, если мой процесс становится волосатым)

Что я делаю сейчас, так это оборачиваю ткачество во многие уродливые пользовательские проверки, например, такие:

        if (getOriginalRoute().getOutputs().size() == 1) {
            weaveAddLast().to("seda:endjob");
        }

Вопрос в том, есть ли хороший способ перезагрузить ткачество? Или перезагрузить RouteBuilder? Или что-то еще, просто без дополнительного кода?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...