in opbeans/src/main/java/co/elastic/apm/opbeans/controllers/APIRestController.java [155:176]
OrderDetail createOrder(@RequestBody JsonNode orderJson) {
long customerId = orderJson.get("customer_id").asLong();
Span span = tracer.spanBuilder("OpenTelemetry create order")
.setAttribute("customer.id", customerId)
.startSpan();
try (Scope scope = span.makeCurrent()) {
// The "not found" error will be captured by the active span
// While it is an error on the client side, we use it to showcase implicit error capture.
Customer customer = customerRepository.findById(customerId)
.orElseThrow(notFound());
Order savedOrder = saveOrder(customer);
return order(savedOrder.getId());
} catch (Exception e) {
span.setStatus(StatusCode.ERROR);
span.recordException(e);
throw e;
} finally {
span.end();
}
}