OrderDetail createOrder()

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();
        }
    }