Я использую PicoContainer с Cucumber, и он работает, но когда он не работает из-за ошибки пользователя, ie. плохой или отсутствующий файл конфигурации, сообщение об ошибке не связано с проблемой (в нем говорится о Cucumber), и есть тонна трассировки стека, которая шумит для моих пользователей, которым просто нужно знать, что их файл конфигурации плох. В идеале программа просто остановится и напечатает нетехническое сообщение об ошибке.
Ищите здесь любые варианты. Все, что я могу придумать, это вызвать system.exit (1), который я еще не пробовал.
Кроме того, я использую бегун JUnit, что означает, что я не контролирую main () и не могу поймать исключение, если выбрасываю его.
public final class CustomObjectFactory implements ObjectFactory {
private final Set<Class<?>> classes = new HashSet();
private MutablePicoContainer pico;
public CustomObjectFactory() {
}
private static boolean isInstantiable(Class<?> clazz) {
boolean isNonStaticInnerClass = !Modifier.isStatic(clazz.getModifiers()) && clazz.getEnclosingClass() != null;
return Modifier.isPublic(clazz.getModifiers()) && !Modifier.isAbstract(clazz.getModifiers()) && !isNonStaticInnerClass;
}
public void start() {
this.pico = (new PicoBuilder()).withCaching().withLifecycle().build();
Iterator var1 = this.classes.iterator();
while(var1.hasNext()) {
Class<?> clazz = (Class)var1.next();
this.pico.addComponent(clazz);
}
// This is where the application specific stuff happens
// Everything else in this class is a copy of .... what's it called.. PicoObjectFactory?
// DO MY APPLICATION SPECIFIC STUFF
// Inside of here, objects are constructed and pico.addComponent(...) is called with those constructed objects.
// But there can be errors in that process.
MySpecialPicoContainerComponentAdder.addMyComponents(this.pico);
// In other words, what if I just stick a throw new RuntimeException() right here on this line?
this.pico.start();
}
...
...
}
In resources/META-INF/services
У меня есть
com.acme.mystuff.moreofmystuff.stepdefinitions.CustomObjectFactory
Извините, у меня нет больше журналов / информации сейчас, я буду редактировать, когда смогу получить информацию: )
Также я понятия не имею, правильно ли я делаю. Совет приветствуется!