Я первый, кто наткнулся на это? Есть ли способ, которым я наблюдал, чтобы сбросить загруженный контекст без написания слишком большого количества кода?
Проблема:
@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? Или что-то еще, просто без дополнительного кода?