in components-starter/camel-debug-starter/src/main/java/org/apache/camel/spring/boot/debug/CamelDebugAutoConfiguration.java [41:100]
public BacklogDebugger backlogDebugger(CamelContext camelContext, CamelDebugConfigurationProperties config)
throws Exception {
// enable debugger on camel
camelContext.setDebugging(config.isEnabled());
camelContext.setDebugStandby(config.isStandby());
if (config.isEnabled() || config.isStandby()) {
// must enable source location and history
// so debugger tooling knows to map breakpoints to source code
camelContext.setSourceLocationEnabled(true);
camelContext.setMessageHistory(true);
}
BacklogDebugger debugger = DefaultBacklogDebugger.createDebugger(camelContext);
debugger.setStandby(config.isStandby());
debugger.setInitialBreakpoints(config.getBreakpoints());
debugger.setSingleStepIncludeStartEnd(config.isSingleStepIncludeStartEnd());
debugger.setBodyMaxChars(config.getBodyMaxChars());
debugger.setBodyIncludeStreams(config.isBodyIncludeStreams());
debugger.setBodyIncludeFiles(config.isBodyIncludeFiles());
debugger.setIncludeExchangeProperties(config.isIncludeExchangeProperties());
debugger.setIncludeExchangeVariables(config.isIncludeExchangeVariables());
debugger.setIncludeException(config.isIncludeException());
debugger.setLoggingLevel(config.getLoggingLevel().name());
if (config.isWaitForAttach()) {
debugger.setSuspendMode(config.isWaitForAttach());
}
debugger.setFallbackTimeout(config.getFallbackTimeout());
// enable jmx connector if port is set
if (config.isJmxConnectorEnabled()) {
DebuggerJmxConnectorService connector = new DebuggerJmxConnectorService();
connector.setCreateConnector(true);
connector.setRegistryPort(config.getJmxConnectorPort());
camelContext.addService(connector);
}
// start debugger after context is started
camelContext.addLifecycleStrategy(new LifecycleStrategySupport() {
@Override
public void onContextStarted(CamelContext context) {
// only enable debugger if not in standby mode
if (config.isEnabled() && !debugger.isStandby()) {
debugger.enableDebugger();
}
}
@Override
public void onContextStopping(CamelContext context) {
if (debugger.isEnabled()) {
debugger.disableDebugger();
}
}
});
camelContext.addService(debugger);
return debugger;
}