This is an automated email from the ASF dual-hosted git repository.

reta pushed a commit to branch 3.2.x-fixes
in repository https://gitbox.apache.org/repos/asf/cxf.git

commit f3f798e20a36244c94bd744beb6521d78bc93256
Author: reta <drr...@gmail.com>
AuthorDate: Fri Sep 21 08:16:30 2018 -0400

    CXF-7844: Change Zipkin/Brave XML to use brave-spring-beans
---
 .../samples/jax_rs/tracing_brave/README.txt        |  8 +++
 .../release/samples/jax_rs/tracing_brave/pom.xml   | 12 +++-
 .../java/demo/jaxrs/tracing/client/Client.java     |  9 ++-
 .../jaxrs/tracing/server/CatalogApplication.java   |  4 +-
 .../demo/jaxrs/tracing/server/CatalogTracing.java  | 72 ++++++++++++++++++++++
 .../samples/jax_rs/tracing_brave_osgi/README.txt   | 13 +++-
 .../tracing/server/CatalogTracingFactory.java}     | 37 +++++------
 .../main/resources/OSGI-INF/blueprint/context.xml  | 11 +++-
 .../samples/jaxws_tracing_brave_osgi/README.txt    |  7 +++
 .../tracing/server/CatalogTracingFactory.java}     | 39 +++++-------
 .../tracing/server/impl/CatalogServiceImpl.java    |  5 +-
 .../main/resources/OSGI-INF/blueprint/context.xml  | 15 ++---
 .../karaf/features/src/main/resources/features.xml |  1 -
 13 files changed, 174 insertions(+), 59 deletions(-)

diff --git 
a/distribution/src/main/release/samples/jax_rs/tracing_brave/README.txt 
b/distribution/src/main/release/samples/jax_rs/tracing_brave/README.txt
index ceb779f..37a911e 100644
--- a/distribution/src/main/release/samples/jax_rs/tracing_brave/README.txt
+++ b/distribution/src/main/release/samples/jax_rs/tracing_brave/README.txt
@@ -13,6 +13,10 @@ following services at URL http://localhost:9000/catalog:
 Building and running the demo using Maven
 ---------------------------------------
 
+Run OpenZipkin server (or point CatalogTracing to the existing one): 
+
+  docker run -d -p 9411:9411 openzipkin/zipkin
+
 From the base directory of this sample (i.e., where this README file is
 located), the Maven pom.xml file can be used to build and run the demo. 
 
@@ -26,5 +30,9 @@ Using either UNIX or Windows:
 
 To remove the target dir, run mvn clean".
 
+Navigate to Zipkin UI to explore the traces (or point to existing deployment): 
+  
+  http://localhost:9411/ 
+
 
 
diff --git a/distribution/src/main/release/samples/jax_rs/tracing_brave/pom.xml 
b/distribution/src/main/release/samples/jax_rs/tracing_brave/pom.xml
index 7bb7427..2ca44c1 100644
--- a/distribution/src/main/release/samples/jax_rs/tracing_brave/pom.xml
+++ b/distribution/src/main/release/samples/jax_rs/tracing_brave/pom.xml
@@ -118,7 +118,7 @@
         <dependency>
             <groupId>org.glassfish</groupId>
             <artifactId>javax.json</artifactId>
-        </dependency>                    
+        </dependency>
         <dependency>
             <groupId>javax.ws.rs</groupId>
             <artifactId>javax.ws.rs-api</artifactId>
@@ -127,5 +127,15 @@
             <groupId>org.eclipse.jetty</groupId>
             <artifactId>jetty-webapp</artifactId>
         </dependency>
+        <dependency>
+            <groupId>io.zipkin.reporter2</groupId>
+            <artifactId>zipkin-sender-okhttp3</artifactId>
+            <version>2.7.8</version>
+        </dependency>
+        <dependency>
+            <groupId>io.zipkin.brave</groupId>
+            <artifactId>brave-context-slf4j</artifactId>
+            <version>5.3.3</version>
+        </dependency>
     </dependencies>
 </project>
diff --git 
a/distribution/src/main/release/samples/jax_rs/tracing_brave/src/main/java/demo/jaxrs/tracing/client/Client.java
 
b/distribution/src/main/release/samples/jax_rs/tracing_brave/src/main/java/demo/jaxrs/tracing/client/Client.java
index a1fc3a6..42784c2 100644
--- 
a/distribution/src/main/release/samples/jax_rs/tracing_brave/src/main/java/demo/jaxrs/tracing/client/Client.java
+++ 
b/distribution/src/main/release/samples/jax_rs/tracing_brave/src/main/java/demo/jaxrs/tracing/client/Client.java
@@ -27,15 +27,15 @@ import javax.ws.rs.core.Response;
 import org.apache.cxf.jaxrs.client.WebClient;
 import org.apache.cxf.tracing.brave.jaxrs.BraveClientProvider;
 
-import brave.Tracing;
+import demo.jaxrs.tracing.server.CatalogTracing;
 
 public final class Client {
     private Client() {
     }
 
     public static void main(final String[] args) throws Exception {
-        final Tracing brave = Tracing.newBuilder().build();
-        final BraveClientProvider provider = new BraveClientProvider(brave);
+        final CatalogTracing tracing = new CatalogTracing("catalog-client");
+        final BraveClientProvider provider = new 
BraveClientProvider(tracing.getHttpTracing());
 
         final Response response = WebClient
             .create("http://localhost:9000/catalog";, Arrays.asList(provider))
@@ -44,5 +44,8 @@ public final class Client {
 
         System.out.println(response.readEntity(String.class));
         response.close();
+        
+        // Give the tracer the time to flush traces (since we are using async 
reporter)
+        Thread.sleep(1000);
     }
 }
diff --git 
a/distribution/src/main/release/samples/jax_rs/tracing_brave/src/main/java/demo/jaxrs/tracing/server/CatalogApplication.java
 
b/distribution/src/main/release/samples/jax_rs/tracing_brave/src/main/java/demo/jaxrs/tracing/server/CatalogApplication.java
index f0c5032..5363a35 100644
--- 
a/distribution/src/main/release/samples/jax_rs/tracing_brave/src/main/java/demo/jaxrs/tracing/server/CatalogApplication.java
+++ 
b/distribution/src/main/release/samples/jax_rs/tracing_brave/src/main/java/demo/jaxrs/tracing/server/CatalogApplication.java
@@ -32,12 +32,14 @@ import org.apache.cxf.tracing.brave.jaxrs.BraveFeature;
 
 @ApplicationPath("/")
 public class CatalogApplication extends Application {
+    private final CatalogTracing tracing = new 
CatalogTracing("catalog-server");
+    
     @Override
     public Set<Object> getSingletons() {
         return new HashSet<>(
             Arrays.asList(
                 new Catalog(),
-                new BraveFeature(),
+                new BraveFeature(tracing.getHttpTracing()),
                 new JsrJsonpProvider()
             )
         );
diff --git 
a/distribution/src/main/release/samples/jax_rs/tracing_brave/src/main/java/demo/jaxrs/tracing/server/CatalogTracing.java
 
b/distribution/src/main/release/samples/jax_rs/tracing_brave/src/main/java/demo/jaxrs/tracing/server/CatalogTracing.java
new file mode 100644
index 0000000..5675642
--- /dev/null
+++ 
b/distribution/src/main/release/samples/jax_rs/tracing_brave/src/main/java/demo/jaxrs/tracing/server/CatalogTracing.java
@@ -0,0 +1,72 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package demo.jaxrs.tracing.server;
+
+import brave.Tracing;
+import brave.context.slf4j.MDCScopeDecorator;
+import brave.http.HttpTracing;
+import brave.propagation.ThreadLocalCurrentTraceContext;
+import zipkin2.Span;
+import zipkin2.reporter.AsyncReporter;
+import zipkin2.reporter.Sender;
+import zipkin2.reporter.okhttp3.OkHttpSender;
+
+public class CatalogTracing {
+    private volatile HttpTracing httpTracing;
+    private final String serviceName;
+    
+    public CatalogTracing(final String serviceName) {
+        this.serviceName = serviceName;
+    }
+    
+    public HttpTracing getHttpTracing() {
+        HttpTracing result = httpTracing;
+        
+        if (result == null) {
+            synchronized(this) {
+                result = httpTracing;
+                if (result == null) {
+                    httpTracing = result = createHttpTracing();
+                }
+            }
+        }
+        
+        return result;
+    }
+    
+    private HttpTracing createHttpTracing() {
+        final Sender sender = 
OkHttpSender.create("http://localhost:9411/api/v2/spans";);
+        final AsyncReporter<Span> reporter = AsyncReporter.create(sender);
+        
+        final Tracing tracing = Tracing
+            .newBuilder()
+            .localServiceName(serviceName)
+            .currentTraceContext(
+                ThreadLocalCurrentTraceContext
+                    .newBuilder()
+                    .addScopeDecorator(MDCScopeDecorator.create()) 
+                    .build()
+              )
+            .spanReporter(reporter)
+            .build();
+        
+        return HttpTracing.create(tracing);
+    }
+}
diff --git 
a/distribution/src/main/release/samples/jax_rs/tracing_brave_osgi/README.txt 
b/distribution/src/main/release/samples/jax_rs/tracing_brave_osgi/README.txt
index 1e2e5a1..913eaee 100644
--- a/distribution/src/main/release/samples/jax_rs/tracing_brave_osgi/README.txt
+++ b/distribution/src/main/release/samples/jax_rs/tracing_brave_osgi/README.txt
@@ -22,6 +22,10 @@ located), the Maven pom.xml file can be used to build and 
run the demo.
 Using either UNIX or Windows:
 
   mvn install
+
+Run OpenZipkin server (or point OSGI-INF/blueprint/context.xml to the existing 
one): 
+
+  docker run -d -p 9411:9411 openzipkin/zipkin
   
 Starting Karaf (refer to 
http://karaf.apache.org/manual/latest-4.0.x/quick-start.html)
 
@@ -56,6 +60,9 @@ for this demo bundle.
 
 Install this demo bundle (using the appropriate bundle version number)
   
+  install -s 
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.okio/1.15.0_1
+  install -s 
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.okhttp/3.11.0_1
+  install -s mvn:io.zipkin.reporter2/zipkin-sender-okhttp3/2.7.8
   install -s mvn:org.apache.cxf.samples/jax_rs_tracing_brave_osgi/3.n.m
 
 You can verify if the CXF JAX-RS OpenZipkin Brave Blueprint Demo is installed 
and started.
@@ -69,4 +76,8 @@ You can verify if the CXF JAX-RS OpenZipkin Brave Blueprint 
Demo is installed an
 
 Now, you will be able to access this CXF JAXRS demo service on your Karaf 
instance at
 
-  http://localhost:8181/cxf/catalog
\ No newline at end of file
+  http://localhost:8181/cxf/catalog
+  
+Navigate to Zipkin UI to explore the traces (or point to existing deployment): 
+  
+  http://localhost:9411/ 
\ No newline at end of file
diff --git 
a/distribution/src/main/release/samples/jax_rs/tracing_brave/src/main/java/demo/jaxrs/tracing/server/CatalogApplication.java
 
b/distribution/src/main/release/samples/jax_rs/tracing_brave_osgi/src/main/java/demo/jaxrs/tracing/server/CatalogTracingFactory.java
similarity index 58%
copy from 
distribution/src/main/release/samples/jax_rs/tracing_brave/src/main/java/demo/jaxrs/tracing/server/CatalogApplication.java
copy to 
distribution/src/main/release/samples/jax_rs/tracing_brave_osgi/src/main/java/demo/jaxrs/tracing/server/CatalogTracingFactory.java
index f0c5032..bb7c498 100644
--- 
a/distribution/src/main/release/samples/jax_rs/tracing_brave/src/main/java/demo/jaxrs/tracing/server/CatalogApplication.java
+++ 
b/distribution/src/main/release/samples/jax_rs/tracing_brave_osgi/src/main/java/demo/jaxrs/tracing/server/CatalogTracingFactory.java
@@ -19,27 +19,22 @@
 
 package demo.jaxrs.tracing.server;
 
+import brave.Tracing;
+import brave.propagation.ThreadLocalCurrentTraceContext;
+import zipkin2.reporter.AsyncReporter;
+import zipkin2.reporter.Sender;
 
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
-
-import javax.ws.rs.ApplicationPath;
-import javax.ws.rs.core.Application;
-
-import org.apache.cxf.jaxrs.provider.jsrjsonp.JsrJsonpProvider;
-import org.apache.cxf.tracing.brave.jaxrs.BraveFeature;
-
-@ApplicationPath("/")
-public class CatalogApplication extends Application {
-    @Override
-    public Set<Object> getSingletons() {
-        return new HashSet<>(
-            Arrays.asList(
-                new Catalog(),
-                new BraveFeature(),
-                new JsrJsonpProvider()
-            )
-        );
+public class CatalogTracingFactory {
+    public static Tracing create(final String serviceName, final Sender 
sender) {
+        return Tracing
+            .newBuilder()
+            .localServiceName(serviceName)
+            .currentTraceContext(
+                ThreadLocalCurrentTraceContext
+                    .newBuilder()
+                    .build()
+              )
+            .spanReporter(AsyncReporter.create(sender))
+            .build();
     }
 }
diff --git 
a/distribution/src/main/release/samples/jax_rs/tracing_brave_osgi/src/main/resources/OSGI-INF/blueprint/context.xml
 
b/distribution/src/main/release/samples/jax_rs/tracing_brave_osgi/src/main/resources/OSGI-INF/blueprint/context.xml
index 194f96e..3cfc9ca 100644
--- 
a/distribution/src/main/release/samples/jax_rs/tracing_brave_osgi/src/main/resources/OSGI-INF/blueprint/context.xml
+++ 
b/distribution/src/main/release/samples/jax_rs/tracing_brave_osgi/src/main/resources/OSGI-INF/blueprint/context.xml
@@ -27,11 +27,20 @@
                            http://cxf.apache.org/blueprint/core 
http://cxf.apache.org/schemas/blueprint/core.xsd
                            http://cxf.apache.org/jaxrs 
http://cxf.apache.org/schemas/blueprint/jaxrs.xsd";>
 
+    <bean id="sender" class="zipkin2.reporter.okhttp3.OkHttpSender" 
factory-method="create">
+        <argument index="0" value="http://localhost:9411/api/v2/spans"; />
+    </bean>
+
+       <bean id="tracing" 
class="demo.jaxrs.tracing.server.CatalogTracingFactory" factory-method="create">
+        <argument index="0" value="catalog-service" />
+        <argument index="1" ref="sender" />
+    </bean>
+  
     <!-- JAXRS providers -->
     <bean id="jsonProvider" 
class="org.apache.cxf.jaxrs.provider.jsrjsonp.JsrJsonpProvider" />
 
     <bean id="braveFeature" 
class="org.apache.cxf.tracing.brave.jaxrs.BraveFeature">
-        <argument index="0" value="catalog-service" />
+        <argument index="0" ref="tracing" />
     </bean>
     
     <!-- Application resources -->
diff --git 
a/distribution/src/main/release/samples/jaxws_tracing_brave_osgi/README.txt 
b/distribution/src/main/release/samples/jaxws_tracing_brave_osgi/README.txt
index 959befa..ca97a63 100644
--- a/distribution/src/main/release/samples/jaxws_tracing_brave_osgi/README.txt
+++ b/distribution/src/main/release/samples/jaxws_tracing_brave_osgi/README.txt
@@ -22,6 +22,10 @@ Using either UNIX or Windows:
 
   mvn install
   
+Run OpenZipkin server (or point OSGI-INF/blueprint/context.xml to the existing 
one): 
+
+  docker run -d -p 9411:9411 openzipkin/zipkin
+  
 Starting Karaf (refer to 
http://karaf.apache.org/manual/latest-4.0.x/quick-start.html)
 
   bin/karaf
@@ -55,6 +59,9 @@ for this demo bundle.
 
 Install this demo bundle (using the appropriate bundle version number)
   
+  install -s 
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.okio/1.15.0_1
+  install -s 
mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.okhttp/3.11.0_1
+  install -s mvn:io.zipkin.reporter2/zipkin-sender-okhttp3/2.7.8
   install -s mvn:org.apache.cxf.samples/jax_ws_tracing_brave_osgi/3.n.m
 
 You can verify if the CXF JAX-RS OpenZipkin Brave Blueprint Demo is installed 
and started.
diff --git 
a/distribution/src/main/release/samples/jax_rs/tracing_brave/src/main/java/demo/jaxrs/tracing/server/CatalogApplication.java
 
b/distribution/src/main/release/samples/jaxws_tracing_brave_osgi/src/main/java/demo/jaxws/tracing/server/CatalogTracingFactory.java
similarity index 56%
copy from 
distribution/src/main/release/samples/jax_rs/tracing_brave/src/main/java/demo/jaxrs/tracing/server/CatalogApplication.java
copy to 
distribution/src/main/release/samples/jaxws_tracing_brave_osgi/src/main/java/demo/jaxws/tracing/server/CatalogTracingFactory.java
index f0c5032..34b5434 100644
--- 
a/distribution/src/main/release/samples/jax_rs/tracing_brave/src/main/java/demo/jaxrs/tracing/server/CatalogApplication.java
+++ 
b/distribution/src/main/release/samples/jaxws_tracing_brave_osgi/src/main/java/demo/jaxws/tracing/server/CatalogTracingFactory.java
@@ -17,29 +17,24 @@
  * under the License.
  */
 
-package demo.jaxrs.tracing.server;
+package demo.jaxws.tracing.server;
 
+import brave.Tracing;
+import brave.propagation.ThreadLocalCurrentTraceContext;
+import zipkin2.reporter.AsyncReporter;
+import zipkin2.reporter.Sender;
 
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
-
-import javax.ws.rs.ApplicationPath;
-import javax.ws.rs.core.Application;
-
-import org.apache.cxf.jaxrs.provider.jsrjsonp.JsrJsonpProvider;
-import org.apache.cxf.tracing.brave.jaxrs.BraveFeature;
-
-@ApplicationPath("/")
-public class CatalogApplication extends Application {
-    @Override
-    public Set<Object> getSingletons() {
-        return new HashSet<>(
-            Arrays.asList(
-                new Catalog(),
-                new BraveFeature(),
-                new JsrJsonpProvider()
-            )
-        );
+public class CatalogTracingFactory {
+    public static Tracing create(final String serviceName, final Sender 
sender) {
+        return Tracing
+            .newBuilder()
+            .localServiceName(serviceName)
+            .currentTraceContext(
+                ThreadLocalCurrentTraceContext
+                    .newBuilder()
+                    .build()
+              )
+            .spanReporter(AsyncReporter.create(sender))
+            .build();
     }
 }
diff --git 
a/distribution/src/main/release/samples/jaxws_tracing_brave_osgi/src/main/java/demo/jaxws/tracing/server/impl/CatalogServiceImpl.java
 
b/distribution/src/main/release/samples/jaxws_tracing_brave_osgi/src/main/java/demo/jaxws/tracing/server/impl/CatalogServiceImpl.java
index 7ec1883..b899614 100644
--- 
a/distribution/src/main/release/samples/jaxws_tracing_brave_osgi/src/main/java/demo/jaxws/tracing/server/impl/CatalogServiceImpl.java
+++ 
b/distribution/src/main/release/samples/jaxws_tracing_brave_osgi/src/main/java/demo/jaxws/tracing/server/impl/CatalogServiceImpl.java
@@ -19,12 +19,14 @@
 package demo.jaxws.tracing.server.impl;
 
 import brave.ScopedSpan;
+
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 
 import brave.Tracing;
+import brave.propagation.TraceContext;
 import demo.jaxws.tracing.server.Book;
 import demo.jaxws.tracing.server.CatalogService;
 
@@ -38,8 +40,9 @@ public class CatalogServiceImpl implements CatalogService {
     }
 
     public void addBook(Book book)  {
+        final TraceContext parent = brave.tracer().currentSpan().context();
         executor.submit(() -> {
-            final ScopedSpan span = brave.tracer().startScopedSpan("Inserting 
New Book");
+            final ScopedSpan span = 
brave.tracer().startScopedSpanWithParent("Inserting New Book", parent);
             try {
                 books.put(book.getId(), book);
             } finally {
diff --git 
a/distribution/src/main/release/samples/jaxws_tracing_brave_osgi/src/main/resources/OSGI-INF/blueprint/context.xml
 
b/distribution/src/main/release/samples/jaxws_tracing_brave_osgi/src/main/resources/OSGI-INF/blueprint/context.xml
index 95110ed..190c72b 100644
--- 
a/distribution/src/main/release/samples/jaxws_tracing_brave_osgi/src/main/resources/OSGI-INF/blueprint/context.xml
+++ 
b/distribution/src/main/release/samples/jaxws_tracing_brave_osgi/src/main/resources/OSGI-INF/blueprint/context.xml
@@ -29,7 +29,7 @@
 
     <!-- CXF BraveFeature -->
     <bean id="braveFeature" class="org.apache.cxf.tracing.brave.BraveFeature">
-        <argument index="0" ref="brave" />
+        <argument index="0" ref="tracing" />
     </bean>
     
     <cxf:bus>
@@ -39,17 +39,18 @@
     </cxf:bus>
     
     <bean id="catalogServiceImpl" 
class="demo.jaxws.tracing.server.impl.CatalogServiceImpl">
-        <argument index="0" ref="brave" />
+        <argument index="0" ref="tracing" />
     </bean>
     
-    <bean id="braveBuilder" class="brave.Tracing" factory-method="newBuilder" 
/>
+    <bean id="sender" class="zipkin2.reporter.okhttp3.OkHttpSender" 
factory-method="create">
+        <argument index="0" value="http://localhost:9411/api/v2/spans"; />
+    </bean>
 
-    <bean id="braveCatalogBuilder" factory-ref="braveBuilder" 
factory-method="localServiceName">
+       <bean id="tracing" 
class="demo.jaxws.tracing.server.CatalogTracingFactory" factory-method="create">
         <argument index="0" value="catalog-service" />
+        <argument index="1" ref="sender" />
     </bean>
-    
-    <bean id="brave" factory-ref="braveCatalogBuilder" factory-method="build" 
/>
-    
+
     <jaxws:endpoint
         implementor="#catalogServiceImpl"
         address="/catalog"
diff --git a/osgi/karaf/features/src/main/resources/features.xml 
b/osgi/karaf/features/src/main/resources/features.xml
index be59c45..a5b0758 100644
--- a/osgi/karaf/features/src/main/resources/features.xml
+++ b/osgi/karaf/features/src/main/resources/features.xml
@@ -294,7 +294,6 @@
     </feature>
     <feature name="cxf-tracing-brave" version="${project.version}">
         <feature version="${project.version}">cxf-core</feature>
-        <bundle start-level="10" 
dependency="true">mvn:com.google.code.findbugs/jsr305/${cxf.findbugs.version}</bundle>
         <bundle 
start-level="35">mvn:io.zipkin.zipkin2/zipkin/${cxf.brave.zipkin.version}</bundle>
         <bundle 
start-level="35">mvn:io.zipkin.reporter2/zipkin-reporter/${cxf.brave.reporter.version}</bundle>
         <bundle 
start-level="35">mvn:io.zipkin.brave/brave/${cxf.brave.version}</bundle>

Reply via email to