public void configure()

in rest-cxf-opentelemetry/rest-cxf-otel-random/src/main/java/org/apache/camel/example/springboot/cxf/otel/CamelRouter.java [40:125]


    public void configure() throws Exception {
        //very raw way, just to handle the validation responses
        onException(BeanValidationException.class)
                .handled(true)
                .setHeader(Exchange.HTTP_RESPONSE_CODE, constant(Response.Status.BAD_REQUEST.getStatusCode()))
                .setBody(simple("${exchangeProperty.CamelExceptionCaught.getMessage()}"));

        // @formatter:off
        from("cxfrs:/api?" +
                    "resourceClasses=org.apache.camel.example.springboot.cxf.otel.RandomService" +
                    "&bindingStyle=SimpleConsumer" +
                    "&providers=jaxrsProvider,openTelemetryProvider" +
                    "&loggingFeatureEnabled=true")
                .to("log:camel-cxf-log?showAll=true")
                .setHeader(Exchange.BEAN_METHOD_NAME, simple("${header.operationName}"))
                .bean(RandomServiceImpl.class);


        from("direct:play").routeId("play")
                .loop(header("attempts"))
                    .process(exchange -> exchange.getIn().getHeaders().clear())
                    .setHeader(CxfConstants.HTTP_METHOD, constant("GET"))
                    .toD("cxfrs:{{service.random.url}}/services/api/generate")
                    .process(exchange -> exchange.getIn().getHeaders().clear())
                    .setHeader(CxfConstants.HTTP_METHOD, constant("POST"))
                    .setHeader(CxfConstants.CONTENT_TYPE, constant(MediaType.APPLICATION_JSON))
                    .toD("cxfrs:{{service.even.url}}/services/api/check")
                    .process(exchange -> exchange.getIn().getHeaders().clear())
                    .setHeader(CxfConstants.HTTP_METHOD, constant("POST"))
                    .setHeader(CxfConstants.CONTENT_TYPE, constant(MediaType.APPLICATION_JSON))
                    .toD("cxfrs:{{service.odd.url}}/services/api/check")
                .end()
                .setBody(constant(null));

        from("direct:random").routeId("generate-random")
                .loadBalance().random()
                    .to("direct:generate-even")
                    .to("direct:generate-odd")
                .end()
                .convertBodyTo(RandomNumber.class);

        from("direct:generate-even")
                .routeId("generate-even")
                .process(exchange -> {
                    int num = random();
                    while (num % 2 != 0) {
                        num = random();
                    }
                    exchange.getIn().setBody(num);
                });

        from("direct:generate-odd").routeId("generate-odd")
                .process(exchange -> {
                    int num = random();
                    while (num % 2 == 0) {
                        num = random();
                    }
                    exchange.getIn().setBody(num);
                });

        from("direct:save-obj").routeId("save-obj")
                .setHeader(MinioConstants.OBJECT_NAME, header("objectName"))
                .marshal().json(JsonLibrary.Jackson)
                .toD("minio://{{bucket.name}}");

        from("direct:load-results").routeId("load-results")
                .setVariable("results", () -> new Results())
                .toD("minio://{{bucket.name}}?operation=listObjects")
                .split(body())
                    .process(exchange -> {
						try {
                            exchange.getIn().setHeader(MinioConstants.OBJECT_NAME
                                    , ((Contents) exchange.getIn().getBody(Result.class).get()).objectName());
						} catch (Exception e) {
							throw new RuntimeException(e);
						}
					})
                    .toD("minio://{{bucket.name}}?operation=getObject")
                    .unmarshal().json(JsonLibrary.Jackson, RandomNumber.class)
                    .process(exchange -> exchange.getVariable("results", Results.class)
							.addNumber(exchange.getIn().getBody(RandomNumber.class)))
                .end()
                .setBody(variable("results"));
        // @formatter:on

    }