class JaegerTracerFactory implements TracerFactory {
    final CloudProps cloudProps;

    public JaegerTracerFactory(CloudProps cloudProps) {
        this.cloudProps = cloudProps;
    }

    @Override
    public Tracer create() throws Exception {<FILL_FUNCTION_BODY>}
}

        URI serverUri = URI.create(cloudProps.getServer());

        Sender sender;

        if ("http".equals(serverUri.getScheme())) {
            HttpSender.Builder builder = new HttpSender.Builder(cloudProps.getServer());

            if (Utils.isNotEmpty(cloudProps.getToken())) {
                builder.withAuth(cloudProps.getToken());
            }

            if (Utils.isNotEmpty(cloudProps.getUsername())) {
                builder.withAuth(cloudProps.getUsername(), cloudProps.getPassword());
            }

            sender = builder.build();
        } else {
            sender = new UdpSender(serverUri.getHost(), serverUri.getPort(), 0);
        }

        final CompositeReporter compositeReporter = new CompositeReporter(
                new RemoteReporter.Builder().withSender(sender).build(),
                new LoggingReporter()
        );

        final Metrics metrics = new Metrics(new NoopMetricsFactory());

        return new JaegerTracer.Builder(Solon.cfg().appName())
                .withReporter(compositeReporter)
                .withMetrics(metrics)
                .withExpandExceptionLogs()
                .withSampler(new ConstSampler(true)).build();
    
<no_super_class>