Browse Source

Move `ServletContextPath` to `servlet-common:bootstrap` (#4824)

* Move ServletContextPath to servlet-common:bootstrap

* fix tests

* Simplify ServletContextPath calls in restlet instrumentation
Mateusz Rzeszutek 3 years ago
parent
commit
0bab0c2aa3
74 changed files with 111 additions and 121 deletions
  1. 4 0
      conventions/src/main/kotlin/otel.javaagent-bootstrap.gradle.kts
  2. 2 0
      instrumentation/grails-3.0/javaagent/build.gradle.kts
  3. 1 1
      instrumentation/grails-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grails/GrailsServerSpanNaming.java
  4. 1 1
      instrumentation/jaxrs/jaxrs-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v1_0/JaxrsServerSpanNaming.java
  5. 1 1
      instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/JaxrsServerSpanNaming.java
  6. 1 1
      instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-cxf-3.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/CxfSpanName.java
  7. 1 1
      instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-jersey-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/JerseySpanName.java
  8. 1 1
      instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/ResteasySpanName.java
  9. 4 0
      instrumentation/jaxrs/jaxrs-common/bootstrap/build.gradle.kts
  10. 1 1
      instrumentation/jaxrs/jaxrs-common/bootstrap/src/main/java/io/opentelemetry/javaagent/bootstrap/jaxrs/JaxrsContextPath.java
  11. 4 3
      instrumentation/jaxws/jaxws-2.0-axis2-1.6/javaagent/build.gradle.kts
  12. 2 2
      instrumentation/jaxws/jaxws-2.0-axis2-1.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/axis2/Axis2Helper.java
  13. 1 1
      instrumentation/jaxws/jaxws-2.0-axis2-1.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/axis2/Axis2Request.java
  14. 2 2
      instrumentation/jaxws/jaxws-2.0-axis2-1.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/axis2/Axis2ServerSpanNaming.java
  15. 1 1
      instrumentation/jaxws/jaxws-2.0-axis2-1.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/axis2/Axis2Singletons.java
  16. 0 1
      instrumentation/jaxws/jaxws-2.0-axis2-1.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/axis2/InvocationListenerRegistryTypeInstrumentation.java
  17. 1 1
      instrumentation/jaxws/jaxws-2.0-axis2-1.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/axis2/TracingInvocationListenerFactory.java
  18. 0 7
      instrumentation/jaxws/jaxws-2.0-axis2-1.6/library/build.gradle.kts
  19. 4 1
      instrumentation/jaxws/jaxws-2.0-cxf-3.0/javaagent-unit-tests/build.gradle.kts
  20. 0 0
      instrumentation/jaxws/jaxws-2.0-cxf-3.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/cxf/TracingStartInInterceptorTest.java
  21. 3 1
      instrumentation/jaxws/jaxws-2.0-cxf-3.0/javaagent/build.gradle.kts
  22. 0 0
      instrumentation/jaxws/jaxws-2.0-cxf-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cxf/CxfHelper.java
  23. 0 0
      instrumentation/jaxws/jaxws-2.0-cxf-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cxf/CxfRequest.java
  24. 1 1
      instrumentation/jaxws/jaxws-2.0-cxf-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cxf/CxfServerSpanNaming.java
  25. 0 0
      instrumentation/jaxws/jaxws-2.0-cxf-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cxf/CxfSingletons.java
  26. 0 0
      instrumentation/jaxws/jaxws-2.0-cxf-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cxf/TracingEndInInterceptor.java
  27. 0 0
      instrumentation/jaxws/jaxws-2.0-cxf-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cxf/TracingOutFaultInterceptor.java
  28. 0 0
      instrumentation/jaxws/jaxws-2.0-cxf-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cxf/TracingStartInInterceptor.java
  29. 2 0
      instrumentation/jaxws/jaxws-2.0-metro-2.2/javaagent/build.gradle.kts
  30. 1 1
      instrumentation/jaxws/jaxws-2.0-metro-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/metro/MetroServerSpanNaming.java
  31. 3 1
      instrumentation/jsf/jsf-common/javaagent/build.gradle.kts
  32. 1 1
      instrumentation/jsf/jsf-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsf/JsfErrorCauseExtractor.java
  33. 1 1
      instrumentation/jsf/jsf-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsf/JsfRequest.java
  34. 2 2
      instrumentation/jsf/jsf-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsf/JsfServerSpanNaming.java
  35. 1 1
      instrumentation/jsf/jsf-mojarra-1.2/javaagent/build.gradle.kts
  36. 1 1
      instrumentation/jsf/jsf-mojarra-1.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mojarra/ActionListenerImplInstrumentation.java
  37. 2 2
      instrumentation/jsf/jsf-mojarra-1.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mojarra/MojarraSingletons.java
  38. 1 1
      instrumentation/jsf/jsf-mojarra-1.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mojarra/RestoreViewPhaseInstrumentation.java
  39. 1 1
      instrumentation/jsf/jsf-myfaces-1.2/javaagent/build.gradle.kts
  40. 1 1
      instrumentation/jsf/jsf-myfaces-1.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/myfaces/ActionListenerImplInstrumentation.java
  41. 1 1
      instrumentation/jsf/jsf-myfaces-1.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/myfaces/MyFacesErrorCauseExtractor.java
  42. 1 1
      instrumentation/jsf/jsf-myfaces-1.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/myfaces/MyFacesSingletons.java
  43. 1 1
      instrumentation/jsf/jsf-myfaces-1.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/myfaces/RestoreViewExecutorInstrumentation.java
  44. 1 0
      instrumentation/restlet/restlet-1.0/javaagent/build.gradle.kts
  45. 6 0
      instrumentation/restlet/restlet-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/restlet/v1_0/RestletSingletons.java
  46. 2 2
      instrumentation/restlet/restlet-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/restlet/v1_0/RouteInstrumentation.java
  47. 2 3
      instrumentation/restlet/restlet-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/restlet/v1_0/ServerInstrumentation.java
  48. 1 3
      instrumentation/restlet/restlet-1.0/library/src/main/java/io/opentelemetry/instrumentation/restlet/v1_0/TracingFilter.java
  49. 0 23
      instrumentation/restlet/restlet-1.0/library/src/main/java/io/opentelemetry/instrumentation/restlet/v1_0/internal/RestletServerSpanNaming.java
  50. 1 0
      instrumentation/restlet/restlet-2.0/javaagent/build.gradle.kts
  51. 6 0
      instrumentation/restlet/restlet-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/restlet/v2_0/RestletSingletons.java
  52. 2 2
      instrumentation/restlet/restlet-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/restlet/v2_0/RouteInstrumentation.java
  53. 2 3
      instrumentation/restlet/restlet-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/restlet/v2_0/ServerInstrumentation.java
  54. 1 3
      instrumentation/restlet/restlet-2.0/library/src/main/java/io/opentelemetry/instrumentation/restlet/v2_0/TracingFilter.java
  55. 0 23
      instrumentation/restlet/restlet-2.0/library/src/main/java/io/opentelemetry/instrumentation/restlet/v2_0/internal/RestletServerSpanNaming.java
  56. 4 0
      instrumentation/servlet/servlet-common/bootstrap/build.gradle.kts
  57. 1 1
      instrumentation/servlet/servlet-common/bootstrap/src/main/java/io/opentelemetry/javaagent/bootstrap/servlet/ServletContextPath.java
  58. 1 1
      instrumentation/servlet/servlet-common/bootstrap/src/test/java/io/opentelemetry/javaagent/bootstrap/servlet/ServletContextPathTest.java
  59. 1 1
      instrumentation/servlet/servlet-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/BaseServletHelper.java
  60. 1 1
      instrumentation/servlet/servlet-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/ServletSpanNameProvider.java
  61. 2 0
      instrumentation/spring/spring-webflux-5.0/javaagent/build.gradle.kts
  62. 1 1
      instrumentation/spring/spring-webflux-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webflux/server/HandlerAdapterInstrumentation.java
  63. 1 1
      instrumentation/spring/spring-webflux-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webflux/server/RouteOnSuccessOrError.java
  64. 2 0
      instrumentation/spring/spring-webmvc-3.1/javaagent/build.gradle.kts
  65. 1 1
      instrumentation/spring/spring-webmvc-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/springwebmvc/SpringWebMvcServerSpanNaming.java
  66. 2 0
      instrumentation/struts-2.3/javaagent/build.gradle.kts
  67. 1 1
      instrumentation/struts-2.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/struts2/StrutsServerSpanNaming.java
  68. 2 0
      instrumentation/tapestry-5.4/javaagent/build.gradle.kts
  69. 1 1
      instrumentation/tapestry-5.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/tapestry/TapestryServerSpanNaming.java
  70. 4 1
      instrumentation/vaadin-14.2/javaagent/build.gradle.kts
  71. 1 1
      instrumentation/vaadin-14.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vaadin/VaadinHelper.java
  72. 2 0
      instrumentation/wicket-8.0/javaagent/build.gradle.kts
  73. 1 1
      instrumentation/wicket-8.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/wicket/WicketServerSpanNameing.java
  74. 2 3
      settings.gradle.kts

+ 4 - 0
conventions/src/main/kotlin/otel.javaagent-bootstrap.gradle.kts

@@ -12,4 +12,8 @@ dependencies {
   compileOnly("io.opentelemetry:opentelemetry-api")
   compileOnly(project(":instrumentation-api"))
   compileOnly(project(":javaagent-instrumentation-api"))
+
+  testImplementation("io.opentelemetry:opentelemetry-api")
+  testImplementation(project(":instrumentation-api"))
+  testImplementation(project(":javaagent-instrumentation-api"))
 }

+ 2 - 0
instrumentation/grails-3.0/javaagent/build.gradle.kts

@@ -32,6 +32,8 @@ val grailsVersion = "3.0.6"
 val springBootVersion = "1.2.5.RELEASE"
 
 dependencies {
+  bootstrap(project(":instrumentation:servlet:servlet-common:bootstrap"))
+
   library("org.grails:grails-plugin-url-mappings:$grailsVersion")
 
   testInstrumentation(project(":instrumentation:servlet:servlet-3.0:javaagent"))

+ 1 - 1
instrumentation/grails-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/grails/GrailsServerSpanNaming.java

@@ -6,7 +6,7 @@
 package io.opentelemetry.javaagent.instrumentation.grails;
 
 import io.opentelemetry.instrumentation.api.servlet.ServerSpanNameSupplier;
-import io.opentelemetry.instrumentation.api.servlet.ServletContextPath;
+import io.opentelemetry.javaagent.bootstrap.servlet.ServletContextPath;
 import org.grails.web.mapping.mvc.GrailsControllerUrlMappingInfo;
 
 public class GrailsServerSpanNaming {

+ 1 - 1
instrumentation/jaxrs/jaxrs-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v1_0/JaxrsServerSpanNaming.java

@@ -6,8 +6,8 @@
 package io.opentelemetry.javaagent.instrumentation.jaxrs.v1_0;
 
 import io.opentelemetry.instrumentation.api.servlet.ServerSpanNameSupplier;
-import io.opentelemetry.instrumentation.api.servlet.ServletContextPath;
 import io.opentelemetry.javaagent.bootstrap.jaxrs.JaxrsContextPath;
+import io.opentelemetry.javaagent.bootstrap.servlet.ServletContextPath;
 
 public class JaxrsServerSpanNaming {
 

+ 1 - 1
instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/JaxrsServerSpanNaming.java

@@ -6,8 +6,8 @@
 package io.opentelemetry.javaagent.instrumentation.jaxrs.v2_0;
 
 import io.opentelemetry.instrumentation.api.servlet.ServerSpanNameSupplier;
-import io.opentelemetry.instrumentation.api.servlet.ServletContextPath;
 import io.opentelemetry.javaagent.bootstrap.jaxrs.JaxrsContextPath;
+import io.opentelemetry.javaagent.bootstrap.servlet.ServletContextPath;
 
 public class JaxrsServerSpanNaming {
 

+ 1 - 1
instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-cxf-3.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/CxfSpanName.java

@@ -10,8 +10,8 @@ import static io.opentelemetry.javaagent.instrumentation.jaxrs.v2_0.JaxrsPathUti
 import io.opentelemetry.context.Context;
 import io.opentelemetry.instrumentation.api.servlet.ServerSpanNameSupplier;
 import io.opentelemetry.instrumentation.api.servlet.ServerSpanNaming;
-import io.opentelemetry.instrumentation.api.servlet.ServletContextPath;
 import io.opentelemetry.javaagent.bootstrap.jaxrs.JaxrsContextPath;
+import io.opentelemetry.javaagent.bootstrap.servlet.ServletContextPath;
 import org.apache.cxf.jaxrs.model.ClassResourceInfo;
 import org.apache.cxf.jaxrs.model.OperationResourceInfo;
 import org.apache.cxf.jaxrs.model.URITemplate;

+ 1 - 1
instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-jersey-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/JerseySpanName.java

@@ -10,8 +10,8 @@ import static io.opentelemetry.javaagent.instrumentation.jaxrs.v2_0.JaxrsPathUti
 import io.opentelemetry.context.Context;
 import io.opentelemetry.instrumentation.api.servlet.ServerSpanNameSupplier;
 import io.opentelemetry.instrumentation.api.servlet.ServerSpanNaming;
-import io.opentelemetry.instrumentation.api.servlet.ServletContextPath;
 import io.opentelemetry.javaagent.bootstrap.jaxrs.JaxrsContextPath;
+import io.opentelemetry.javaagent.bootstrap.servlet.ServletContextPath;
 import javax.annotation.Nullable;
 import javax.ws.rs.core.Request;
 import javax.ws.rs.core.UriInfo;

+ 1 - 1
instrumentation/jaxrs/jaxrs-2.0/jaxrs-2.0-resteasy-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jaxrs/v2_0/ResteasySpanName.java

@@ -10,8 +10,8 @@ import static io.opentelemetry.instrumentation.api.servlet.ServerSpanNaming.Sour
 import io.opentelemetry.context.Context;
 import io.opentelemetry.instrumentation.api.servlet.ServerSpanNameSupplier;
 import io.opentelemetry.instrumentation.api.servlet.ServerSpanNaming;
-import io.opentelemetry.instrumentation.api.servlet.ServletContextPath;
 import io.opentelemetry.javaagent.bootstrap.jaxrs.JaxrsContextPath;
+import io.opentelemetry.javaagent.bootstrap.servlet.ServletContextPath;
 import javax.annotation.Nullable;
 
 public final class ResteasySpanName implements ServerSpanNameSupplier<String> {

+ 4 - 0
instrumentation/jaxrs/jaxrs-common/bootstrap/build.gradle.kts

@@ -1,3 +1,7 @@
 plugins {
   id("otel.javaagent-bootstrap")
 }
+
+dependencies {
+  api(project(":instrumentation:servlet:servlet-common:bootstrap"))
+}

+ 1 - 1
instrumentation/jaxrs/jaxrs-common/bootstrap/src/main/java/io/opentelemetry/javaagent/bootstrap/jaxrs/JaxrsContextPath.java

@@ -13,7 +13,7 @@ import javax.annotation.Nullable;
  * Helper container for storing context path for jax-rs requests. Jax-rs context path is the path
  * where jax-rs servlet is mapped or the value of ApplicationPath annotation. Span name is built by
  * combining servlet context path from {@code
- * io.opentelemetry.instrumentation.api.servlet.ServletContextPath}, jax-rs context path and the
+ * io.opentelemetry.javaagent.bootstrap.servlet.ServletContextPath}, jax-rs context path and the
  * Path annotation from called method or class.
  */
 public final class JaxrsContextPath {

+ 4 - 3
instrumentation/jaxws/jaxws-2.0-axis2-1.6/javaagent/build.gradle.kts

@@ -17,14 +17,15 @@ muzzle {
 }
 
 configurations.configureEach {
-  if (!name.contains("muzzle")) {
-    // axis has a dependency on servlet api, get rid of it
+  if (name.contains("test")) {
+    // axis has a dependency on servlet2 api, get rid of it - otherwise the servlet3 instrumentation
+    // will fail during tests
     exclude("javax.servlet", "servlet-api")
   }
 }
 
 dependencies {
-  implementation(project(":instrumentation:jaxws:jaxws-2.0-axis2-1.6:library"))
+  bootstrap(project(":instrumentation:servlet:servlet-common:bootstrap"))
 
   val axis2Version = "1.6.0"
   library("org.apache.axis2:axis2-jaxws:$axis2Version")

+ 2 - 2
instrumentation/jaxws/jaxws-2.0-axis2-1.6/library/src/main/java/io/opentelemetry/instrumentation/axis2/Axis2Helper.java → instrumentation/jaxws/jaxws-2.0-axis2-1.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/axis2/Axis2Helper.java

@@ -3,10 +3,10 @@
  * SPDX-License-Identifier: Apache-2.0
  */
 
-package io.opentelemetry.instrumentation.axis2;
+package io.opentelemetry.javaagent.instrumentation.axis2;
 
 import static io.opentelemetry.instrumentation.api.servlet.ServerSpanNaming.Source.CONTROLLER;
-import static io.opentelemetry.instrumentation.axis2.Axis2Singletons.instrumenter;
+import static io.opentelemetry.javaagent.instrumentation.axis2.Axis2Singletons.instrumenter;
 
 import io.opentelemetry.context.Context;
 import io.opentelemetry.context.Scope;

+ 1 - 1
instrumentation/jaxws/jaxws-2.0-axis2-1.6/library/src/main/java/io/opentelemetry/instrumentation/axis2/Axis2Request.java → instrumentation/jaxws/jaxws-2.0-axis2-1.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/axis2/Axis2Request.java

@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: Apache-2.0
  */
 
-package io.opentelemetry.instrumentation.axis2;
+package io.opentelemetry.javaagent.instrumentation.axis2;
 
 import org.apache.axis2.jaxws.core.MessageContext;
 

+ 2 - 2
instrumentation/jaxws/jaxws-2.0-axis2-1.6/library/src/main/java/io/opentelemetry/instrumentation/axis2/Axis2ServerSpanNaming.java → instrumentation/jaxws/jaxws-2.0-axis2-1.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/axis2/Axis2ServerSpanNaming.java

@@ -3,10 +3,10 @@
  * SPDX-License-Identifier: Apache-2.0
  */
 
-package io.opentelemetry.instrumentation.axis2;
+package io.opentelemetry.javaagent.instrumentation.axis2;
 
 import io.opentelemetry.instrumentation.api.servlet.ServerSpanNameSupplier;
-import io.opentelemetry.instrumentation.api.servlet.ServletContextPath;
+import io.opentelemetry.javaagent.bootstrap.servlet.ServletContextPath;
 import javax.servlet.http.HttpServletRequest;
 import org.apache.axis2.jaxws.core.MessageContext;
 

+ 1 - 1
instrumentation/jaxws/jaxws-2.0-axis2-1.6/library/src/main/java/io/opentelemetry/instrumentation/axis2/Axis2Singletons.java → instrumentation/jaxws/jaxws-2.0-axis2-1.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/axis2/Axis2Singletons.java

@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: Apache-2.0
  */
 
-package io.opentelemetry.instrumentation.axis2;
+package io.opentelemetry.javaagent.instrumentation.axis2;
 
 import io.opentelemetry.api.GlobalOpenTelemetry;
 import io.opentelemetry.instrumentation.api.config.ExperimentalConfig;

+ 0 - 1
instrumentation/jaxws/jaxws-2.0-axis2-1.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/axis2/InvocationListenerRegistryTypeInstrumentation.java

@@ -8,7 +8,6 @@ package io.opentelemetry.javaagent.instrumentation.axis2;
 import static net.bytebuddy.matcher.ElementMatchers.isTypeInitializer;
 import static net.bytebuddy.matcher.ElementMatchers.named;
 
-import io.opentelemetry.instrumentation.axis2.TracingInvocationListenerFactory;
 import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
 import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
 import net.bytebuddy.asm.Advice;

+ 1 - 1
instrumentation/jaxws/jaxws-2.0-axis2-1.6/library/src/main/java/io/opentelemetry/instrumentation/axis2/TracingInvocationListenerFactory.java → instrumentation/jaxws/jaxws-2.0-axis2-1.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/axis2/TracingInvocationListenerFactory.java

@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: Apache-2.0
  */
 
-package io.opentelemetry.instrumentation.axis2;
+package io.opentelemetry.javaagent.instrumentation.axis2;
 
 import org.apache.axis2.jaxws.core.MessageContext;
 import org.apache.axis2.jaxws.server.InvocationListener;

+ 0 - 7
instrumentation/jaxws/jaxws-2.0-axis2-1.6/library/build.gradle.kts

@@ -1,7 +0,0 @@
-plugins {
-  id("otel.library-instrumentation")
-}
-
-dependencies {
-  compileOnly("org.apache.axis2:axis2-jaxws:1.6.0")
-}

+ 4 - 1
instrumentation/jaxws/jaxws-2.0-cxf-3.0/library/build.gradle.kts → instrumentation/jaxws/jaxws-2.0-cxf-3.0/javaagent-unit-tests/build.gradle.kts

@@ -1,10 +1,13 @@
 plugins {
-  id("otel.library-instrumentation")
+  id("otel.java-conventions")
 }
 
 dependencies {
   compileOnly("javax.servlet:javax.servlet-api:3.0.1")
   compileOnly("org.apache.cxf:cxf-rt-frontend-jaxws:3.0.0")
 
+  implementation(project(":instrumentation:jaxws:jaxws-2.0-cxf-3.0:javaagent"))
+
+  testImplementation(project(":instrumentation-api"))
   testImplementation("org.apache.cxf:cxf-rt-frontend-jaxws:3.0.0")
 }

+ 0 - 0
instrumentation/jaxws/jaxws-2.0-cxf-3.0/library/src/test/java/io/opentelemetry/javaagent/instrumentation/cxf/TracingStartInInterceptorTest.java → instrumentation/jaxws/jaxws-2.0-cxf-3.0/javaagent-unit-tests/src/test/java/io/opentelemetry/javaagent/instrumentation/cxf/TracingStartInInterceptorTest.java


+ 3 - 1
instrumentation/jaxws/jaxws-2.0-cxf-3.0/javaagent/build.gradle.kts

@@ -13,9 +13,11 @@ muzzle {
 }
 
 dependencies {
-  implementation(project(":instrumentation:jaxws:jaxws-2.0-cxf-3.0:library"))
+  bootstrap(project(":instrumentation:servlet:servlet-common:bootstrap"))
 
   library("org.apache.cxf:cxf-rt-frontend-jaxws:3.0.0")
+  compileOnly("javax.servlet:javax.servlet-api:3.0.1")
+
   testLibrary("org.apache.cxf:cxf-rt-transports-http:3.0.0")
 
   testImplementation(project(":instrumentation:jaxws:jaxws-2.0-common-testing"))

+ 0 - 0
instrumentation/jaxws/jaxws-2.0-cxf-3.0/library/src/main/java/io/opentelemetry/javaagent/instrumentation/cxf/CxfHelper.java → instrumentation/jaxws/jaxws-2.0-cxf-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cxf/CxfHelper.java


+ 0 - 0
instrumentation/jaxws/jaxws-2.0-cxf-3.0/library/src/main/java/io/opentelemetry/javaagent/instrumentation/cxf/CxfRequest.java → instrumentation/jaxws/jaxws-2.0-cxf-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cxf/CxfRequest.java


+ 1 - 1
instrumentation/jaxws/jaxws-2.0-cxf-3.0/library/src/main/java/io/opentelemetry/javaagent/instrumentation/cxf/CxfServerSpanNaming.java → instrumentation/jaxws/jaxws-2.0-cxf-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cxf/CxfServerSpanNaming.java

@@ -6,7 +6,7 @@
 package io.opentelemetry.javaagent.instrumentation.cxf;
 
 import io.opentelemetry.instrumentation.api.servlet.ServerSpanNameSupplier;
-import io.opentelemetry.instrumentation.api.servlet.ServletContextPath;
+import io.opentelemetry.javaagent.bootstrap.servlet.ServletContextPath;
 import javax.servlet.http.HttpServletRequest;
 
 public class CxfServerSpanNaming {

+ 0 - 0
instrumentation/jaxws/jaxws-2.0-cxf-3.0/library/src/main/java/io/opentelemetry/javaagent/instrumentation/cxf/CxfSingletons.java → instrumentation/jaxws/jaxws-2.0-cxf-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cxf/CxfSingletons.java


+ 0 - 0
instrumentation/jaxws/jaxws-2.0-cxf-3.0/library/src/main/java/io/opentelemetry/javaagent/instrumentation/cxf/TracingEndInInterceptor.java → instrumentation/jaxws/jaxws-2.0-cxf-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cxf/TracingEndInInterceptor.java


+ 0 - 0
instrumentation/jaxws/jaxws-2.0-cxf-3.0/library/src/main/java/io/opentelemetry/javaagent/instrumentation/cxf/TracingOutFaultInterceptor.java → instrumentation/jaxws/jaxws-2.0-cxf-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cxf/TracingOutFaultInterceptor.java


+ 0 - 0
instrumentation/jaxws/jaxws-2.0-cxf-3.0/library/src/main/java/io/opentelemetry/javaagent/instrumentation/cxf/TracingStartInInterceptor.java → instrumentation/jaxws/jaxws-2.0-cxf-3.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/cxf/TracingStartInInterceptor.java


+ 2 - 0
instrumentation/jaxws/jaxws-2.0-metro-2.2/javaagent/build.gradle.kts

@@ -15,6 +15,8 @@ muzzle {
 }
 
 dependencies {
+  bootstrap(project(":instrumentation:servlet:servlet-common:bootstrap"))
+
   library("com.sun.xml.ws:jaxws-rt:2.2.0.1")
 
   compileOnly("javax.servlet:javax.servlet-api:3.0.1")

+ 1 - 1
instrumentation/jaxws/jaxws-2.0-metro-2.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/metro/MetroServerSpanNaming.java

@@ -7,7 +7,7 @@ package io.opentelemetry.javaagent.instrumentation.metro;
 
 import com.sun.xml.ws.api.message.Packet;
 import io.opentelemetry.instrumentation.api.servlet.ServerSpanNameSupplier;
-import io.opentelemetry.instrumentation.api.servlet.ServletContextPath;
+import io.opentelemetry.javaagent.bootstrap.servlet.ServletContextPath;
 import javax.servlet.http.HttpServletRequest;
 import javax.xml.ws.handler.MessageContext;
 

+ 3 - 1
instrumentation/jsf/jsf-common/library/build.gradle.kts → instrumentation/jsf/jsf-common/javaagent/build.gradle.kts

@@ -1,8 +1,10 @@
 plugins {
-  id("otel.library-instrumentation")
+  id("otel.javaagent-instrumentation")
 }
 
 dependencies {
+  compileOnly(project(":instrumentation:servlet:servlet-common:bootstrap"))
+
   compileOnly("jakarta.faces:jakarta.faces-api:2.3.2")
   compileOnly("jakarta.el:jakarta.el-api:3.0.3")
 }

+ 1 - 1
instrumentation/jsf/jsf-common/library/src/main/java/io/opentelemetry/instrumentation/jsf/JsfErrorCauseExtractor.java → instrumentation/jsf/jsf-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsf/JsfErrorCauseExtractor.java

@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: Apache-2.0
  */
 
-package io.opentelemetry.instrumentation.jsf;
+package io.opentelemetry.javaagent.instrumentation.jsf;
 
 import io.opentelemetry.instrumentation.api.instrumenter.ErrorCauseExtractor;
 import javax.faces.FacesException;

+ 1 - 1
instrumentation/jsf/jsf-common/library/src/main/java/io/opentelemetry/instrumentation/jsf/JsfRequest.java → instrumentation/jsf/jsf-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsf/JsfRequest.java

@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: Apache-2.0
  */
 
-package io.opentelemetry.instrumentation.jsf;
+package io.opentelemetry.javaagent.instrumentation.jsf;
 
 import java.util.Objects;
 import javax.faces.component.ActionSource2;

+ 2 - 2
instrumentation/jsf/jsf-common/library/src/main/java/io/opentelemetry/instrumentation/jsf/JsfServerSpanNaming.java → instrumentation/jsf/jsf-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/jsf/JsfServerSpanNaming.java

@@ -3,10 +3,10 @@
  * SPDX-License-Identifier: Apache-2.0
  */
 
-package io.opentelemetry.instrumentation.jsf;
+package io.opentelemetry.javaagent.instrumentation.jsf;
 
 import io.opentelemetry.instrumentation.api.servlet.ServerSpanNameSupplier;
-import io.opentelemetry.instrumentation.api.servlet.ServletContextPath;
+import io.opentelemetry.javaagent.bootstrap.servlet.ServletContextPath;
 import javax.faces.component.UIViewRoot;
 import javax.faces.context.FacesContext;
 

+ 1 - 1
instrumentation/jsf/jsf-mojarra-1.2/javaagent/build.gradle.kts

@@ -64,7 +64,7 @@ tasks {
 dependencies {
   compileOnly("javax.faces:jsf-api:1.2")
 
-  implementation(project(":instrumentation:jsf:jsf-common:library"))
+  implementation(project(":instrumentation:jsf:jsf-common:javaagent"))
 
   testImplementation(project(":instrumentation:jsf:jsf-common:testing"))
   testInstrumentation(project(":instrumentation:servlet:servlet-3.0:javaagent"))

+ 1 - 1
instrumentation/jsf/jsf-mojarra-1.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mojarra/ActionListenerImplInstrumentation.java

@@ -10,10 +10,10 @@ import static net.bytebuddy.matcher.ElementMatchers.named;
 
 import io.opentelemetry.context.Context;
 import io.opentelemetry.context.Scope;
-import io.opentelemetry.instrumentation.jsf.JsfRequest;
 import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
 import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
 import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge;
+import io.opentelemetry.javaagent.instrumentation.jsf.JsfRequest;
 import javax.faces.event.ActionEvent;
 import net.bytebuddy.asm.Advice;
 import net.bytebuddy.description.type.TypeDescription;

+ 2 - 2
instrumentation/jsf/jsf-mojarra-1.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mojarra/MojarraSingletons.java

@@ -8,8 +8,8 @@ package io.opentelemetry.javaagent.instrumentation.mojarra;
 import io.opentelemetry.api.GlobalOpenTelemetry;
 import io.opentelemetry.instrumentation.api.config.ExperimentalConfig;
 import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
-import io.opentelemetry.instrumentation.jsf.JsfErrorCauseExtractor;
-import io.opentelemetry.instrumentation.jsf.JsfRequest;
+import io.opentelemetry.javaagent.instrumentation.jsf.JsfErrorCauseExtractor;
+import io.opentelemetry.javaagent.instrumentation.jsf.JsfRequest;
 
 public class MojarraSingletons {
   private static final String INSTRUMENTATION_NAME = "io.opentelemetry.mojarra-1.2";

+ 1 - 1
instrumentation/jsf/jsf-mojarra-1.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/mojarra/RestoreViewPhaseInstrumentation.java

@@ -11,9 +11,9 @@ import static net.bytebuddy.matcher.ElementMatchers.named;
 import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
 
 import io.opentelemetry.instrumentation.api.servlet.ServerSpanNaming;
-import io.opentelemetry.instrumentation.jsf.JsfServerSpanNaming;
 import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
 import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
+import io.opentelemetry.javaagent.instrumentation.jsf.JsfServerSpanNaming;
 import javax.faces.context.FacesContext;
 import net.bytebuddy.asm.Advice;
 import net.bytebuddy.description.type.TypeDescription;

+ 1 - 1
instrumentation/jsf/jsf-myfaces-1.2/javaagent/build.gradle.kts

@@ -33,7 +33,7 @@ dependencies {
   compileOnly("org.apache.myfaces.core:myfaces-api:1.2.12")
   compileOnly("javax.el:el-api:1.0")
 
-  implementation(project(":instrumentation:jsf:jsf-common:library"))
+  implementation(project(":instrumentation:jsf:jsf-common:javaagent"))
 
   testImplementation(project(":instrumentation:jsf:jsf-common:testing"))
   testInstrumentation(project(":instrumentation:servlet:servlet-3.0:javaagent"))

+ 1 - 1
instrumentation/jsf/jsf-myfaces-1.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/myfaces/ActionListenerImplInstrumentation.java

@@ -10,10 +10,10 @@ import static net.bytebuddy.matcher.ElementMatchers.named;
 
 import io.opentelemetry.context.Context;
 import io.opentelemetry.context.Scope;
-import io.opentelemetry.instrumentation.jsf.JsfRequest;
 import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
 import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
 import io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge;
+import io.opentelemetry.javaagent.instrumentation.jsf.JsfRequest;
 import javax.faces.event.ActionEvent;
 import net.bytebuddy.asm.Advice;
 import net.bytebuddy.description.type.TypeDescription;

+ 1 - 1
instrumentation/jsf/jsf-myfaces-1.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/myfaces/MyFacesErrorCauseExtractor.java

@@ -5,7 +5,7 @@
 
 package io.opentelemetry.javaagent.instrumentation.myfaces;
 
-import io.opentelemetry.instrumentation.jsf.JsfErrorCauseExtractor;
+import io.opentelemetry.javaagent.instrumentation.jsf.JsfErrorCauseExtractor;
 import javax.el.ELException;
 
 public class MyFacesErrorCauseExtractor extends JsfErrorCauseExtractor {

+ 1 - 1
instrumentation/jsf/jsf-myfaces-1.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/myfaces/MyFacesSingletons.java

@@ -8,7 +8,7 @@ package io.opentelemetry.javaagent.instrumentation.myfaces;
 import io.opentelemetry.api.GlobalOpenTelemetry;
 import io.opentelemetry.instrumentation.api.config.ExperimentalConfig;
 import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
-import io.opentelemetry.instrumentation.jsf.JsfRequest;
+import io.opentelemetry.javaagent.instrumentation.jsf.JsfRequest;
 
 public class MyFacesSingletons {
   private static final String INSTRUMENTATION_NAME = "io.opentelemetry.myfaces-1.2";

+ 1 - 1
instrumentation/jsf/jsf-myfaces-1.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/myfaces/RestoreViewExecutorInstrumentation.java

@@ -11,9 +11,9 @@ import static net.bytebuddy.matcher.ElementMatchers.named;
 import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
 
 import io.opentelemetry.instrumentation.api.servlet.ServerSpanNaming;
-import io.opentelemetry.instrumentation.jsf.JsfServerSpanNaming;
 import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
 import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
+import io.opentelemetry.javaagent.instrumentation.jsf.JsfServerSpanNaming;
 import javax.faces.context.FacesContext;
 import net.bytebuddy.asm.Advice;
 import net.bytebuddy.description.type.TypeDescription;

+ 1 - 0
instrumentation/restlet/restlet-1.0/javaagent/build.gradle.kts

@@ -19,6 +19,7 @@ repositories {
 
 dependencies {
   api(project(":instrumentation:restlet:restlet-1.0:library"))
+  bootstrap(project(":instrumentation:servlet:servlet-common:bootstrap"))
 
   library("org.restlet:org.restlet:1.1.5")
   library("com.noelios.restlet:com.noelios.restlet:1.1.5")

+ 6 - 0
instrumentation/restlet/restlet-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/restlet/v1_0/RestletSingletons.java

@@ -7,7 +7,9 @@ package io.opentelemetry.javaagent.instrumentation.restlet.v1_0;
 
 import io.opentelemetry.api.GlobalOpenTelemetry;
 import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
+import io.opentelemetry.instrumentation.api.servlet.ServerSpanNameSupplier;
 import io.opentelemetry.instrumentation.restlet.v1_0.RestletTracing;
+import io.opentelemetry.javaagent.bootstrap.servlet.ServletContextPath;
 import org.restlet.data.Request;
 import org.restlet.data.Response;
 
@@ -20,5 +22,9 @@ public final class RestletSingletons {
     return INSTRUMENTER;
   }
 
+  public static ServerSpanNameSupplier<String> serverSpanName() {
+    return ServletContextPath::prepend;
+  }
+
   private RestletSingletons() {}
 }

+ 2 - 2
instrumentation/restlet/restlet-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/restlet/v1_0/RouteInstrumentation.java

@@ -7,12 +7,12 @@ package io.opentelemetry.javaagent.instrumentation.restlet.v1_0;
 
 import static io.opentelemetry.instrumentation.api.servlet.ServerSpanNaming.Source.CONTROLLER;
 import static io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge.currentContext;
+import static io.opentelemetry.javaagent.instrumentation.restlet.v1_0.RestletSingletons.serverSpanName;
 import static net.bytebuddy.matcher.ElementMatchers.isMethod;
 import static net.bytebuddy.matcher.ElementMatchers.named;
 import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
 
 import io.opentelemetry.instrumentation.api.servlet.ServerSpanNaming;
-import io.opentelemetry.instrumentation.restlet.v1_0.internal.RestletServerSpanNaming;
 import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
 import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
 import net.bytebuddy.asm.Advice;
@@ -45,7 +45,7 @@ public class RouteInstrumentation implements TypeInstrumentation {
       String pattern = route.getTemplate().getPattern();
 
       ServerSpanNaming.updateServerSpanName(
-          currentContext(), CONTROLLER, RestletServerSpanNaming.SERVER_SPAN_NAME, pattern);
+          currentContext(), CONTROLLER, serverSpanName(), pattern);
     }
   }
 }

+ 2 - 3
instrumentation/restlet/restlet-1.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/restlet/v1_0/ServerInstrumentation.java

@@ -8,6 +8,7 @@ package io.opentelemetry.javaagent.instrumentation.restlet.v1_0;
 import static io.opentelemetry.instrumentation.api.servlet.ServerSpanNaming.Source.CONTROLLER;
 import static io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge.currentContext;
 import static io.opentelemetry.javaagent.instrumentation.restlet.v1_0.RestletSingletons.instrumenter;
+import static io.opentelemetry.javaagent.instrumentation.restlet.v1_0.RestletSingletons.serverSpanName;
 import static net.bytebuddy.matcher.ElementMatchers.isMethod;
 import static net.bytebuddy.matcher.ElementMatchers.named;
 import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
@@ -15,7 +16,6 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
 import io.opentelemetry.context.Context;
 import io.opentelemetry.context.Scope;
 import io.opentelemetry.instrumentation.api.servlet.ServerSpanNaming;
-import io.opentelemetry.instrumentation.restlet.v1_0.internal.RestletServerSpanNaming;
 import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
 import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
 import net.bytebuddy.asm.Advice;
@@ -76,8 +76,7 @@ public class ServerInstrumentation implements TypeInstrumentation {
       scope.close();
 
       if (Status.CLIENT_ERROR_NOT_FOUND.equals(response.getStatus())) {
-        ServerSpanNaming.updateServerSpanName(
-            context, CONTROLLER, RestletServerSpanNaming.SERVER_SPAN_NAME, "/*");
+        ServerSpanNaming.updateServerSpanName(context, CONTROLLER, serverSpanName(), "/*");
       }
 
       if (exception != null) {

+ 1 - 3
instrumentation/restlet/restlet-1.0/library/src/main/java/io/opentelemetry/instrumentation/restlet/v1_0/TracingFilter.java

@@ -11,7 +11,6 @@ import io.opentelemetry.context.Context;
 import io.opentelemetry.context.Scope;
 import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
 import io.opentelemetry.instrumentation.api.servlet.ServerSpanNaming;
-import io.opentelemetry.instrumentation.restlet.v1_0.internal.RestletServerSpanNaming;
 import org.restlet.Filter;
 import org.restlet.data.Request;
 import org.restlet.data.Response;
@@ -39,8 +38,7 @@ final class TracingFilter extends Filter {
       scope = context.makeCurrent();
     }
 
-    ServerSpanNaming.updateServerSpanName(
-        context, CONTROLLER, RestletServerSpanNaming.SERVER_SPAN_NAME, path);
+    ServerSpanNaming.updateServerSpanName(context, CONTROLLER, (ctx, s) -> s, path);
 
     Throwable statusThrowable = null;
     try {

+ 0 - 23
instrumentation/restlet/restlet-1.0/library/src/main/java/io/opentelemetry/instrumentation/restlet/v1_0/internal/RestletServerSpanNaming.java

@@ -1,23 +0,0 @@
-/*
- * Copyright The OpenTelemetry Authors
- * SPDX-License-Identifier: Apache-2.0
- */
-
-package io.opentelemetry.instrumentation.restlet.v1_0.internal;
-
-import io.opentelemetry.instrumentation.api.servlet.ServerSpanNameSupplier;
-import io.opentelemetry.instrumentation.api.servlet.ServletContextPath;
-
-public final class RestletServerSpanNaming {
-
-  public static final ServerSpanNameSupplier<String> SERVER_SPAN_NAME =
-      (context, pattern) -> {
-        if (pattern == null || pattern.equals("")) {
-          return null;
-        }
-
-        return ServletContextPath.prepend(context, pattern);
-      };
-
-  private RestletServerSpanNaming() {}
-}

+ 1 - 0
instrumentation/restlet/restlet-2.0/javaagent/build.gradle.kts

@@ -19,6 +19,7 @@ repositories {
 
 dependencies {
   api(project(":instrumentation:restlet:restlet-2.0:library"))
+  bootstrap(project(":instrumentation:servlet:servlet-common:bootstrap"))
 
   library("org.restlet.jse:org.restlet:2.0.2")
 

+ 6 - 0
instrumentation/restlet/restlet-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/restlet/v2_0/RestletSingletons.java

@@ -7,7 +7,9 @@ package io.opentelemetry.javaagent.instrumentation.restlet.v2_0;
 
 import io.opentelemetry.api.GlobalOpenTelemetry;
 import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
+import io.opentelemetry.instrumentation.api.servlet.ServerSpanNameSupplier;
 import io.opentelemetry.instrumentation.restlet.v2_0.internal.RestletInstrumenterFactory;
+import io.opentelemetry.javaagent.bootstrap.servlet.ServletContextPath;
 import org.restlet.Request;
 import org.restlet.Response;
 
@@ -20,5 +22,9 @@ public final class RestletSingletons {
     return INSTRUMENTER;
   }
 
+  public static ServerSpanNameSupplier<String> serverSpanName() {
+    return ServletContextPath::prepend;
+  }
+
   private RestletSingletons() {}
 }

+ 2 - 2
instrumentation/restlet/restlet-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/restlet/v2_0/RouteInstrumentation.java

@@ -7,12 +7,12 @@ package io.opentelemetry.javaagent.instrumentation.restlet.v2_0;
 
 import static io.opentelemetry.instrumentation.api.servlet.ServerSpanNaming.Source.CONTROLLER;
 import static io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge.currentContext;
+import static io.opentelemetry.javaagent.instrumentation.restlet.v2_0.RestletSingletons.serverSpanName;
 import static net.bytebuddy.matcher.ElementMatchers.isMethod;
 import static net.bytebuddy.matcher.ElementMatchers.named;
 import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
 
 import io.opentelemetry.instrumentation.api.servlet.ServerSpanNaming;
-import io.opentelemetry.instrumentation.restlet.v2_0.internal.RestletServerSpanNaming;
 import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
 import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
 import net.bytebuddy.asm.Advice;
@@ -46,7 +46,7 @@ public class RouteInstrumentation implements TypeInstrumentation {
       String pattern = route.getTemplate().getPattern();
 
       ServerSpanNaming.updateServerSpanName(
-          currentContext(), CONTROLLER, RestletServerSpanNaming.SERVER_SPAN_NAME, pattern);
+          currentContext(), CONTROLLER, serverSpanName(), pattern);
     }
   }
 }

+ 2 - 3
instrumentation/restlet/restlet-2.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/restlet/v2_0/ServerInstrumentation.java

@@ -8,6 +8,7 @@ package io.opentelemetry.javaagent.instrumentation.restlet.v2_0;
 import static io.opentelemetry.instrumentation.api.servlet.ServerSpanNaming.Source.CONTROLLER;
 import static io.opentelemetry.javaagent.instrumentation.api.Java8BytecodeBridge.currentContext;
 import static io.opentelemetry.javaagent.instrumentation.restlet.v2_0.RestletSingletons.instrumenter;
+import static io.opentelemetry.javaagent.instrumentation.restlet.v2_0.RestletSingletons.serverSpanName;
 import static net.bytebuddy.matcher.ElementMatchers.isMethod;
 import static net.bytebuddy.matcher.ElementMatchers.named;
 import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
@@ -15,7 +16,6 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
 import io.opentelemetry.context.Context;
 import io.opentelemetry.context.Scope;
 import io.opentelemetry.instrumentation.api.servlet.ServerSpanNaming;
-import io.opentelemetry.instrumentation.restlet.v2_0.internal.RestletServerSpanNaming;
 import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
 import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
 import net.bytebuddy.asm.Advice;
@@ -76,8 +76,7 @@ public class ServerInstrumentation implements TypeInstrumentation {
       scope.close();
 
       if (Status.CLIENT_ERROR_NOT_FOUND.equals(response.getStatus())) {
-        ServerSpanNaming.updateServerSpanName(
-            context, CONTROLLER, RestletServerSpanNaming.SERVER_SPAN_NAME, "/*");
+        ServerSpanNaming.updateServerSpanName(context, CONTROLLER, serverSpanName(), "/*");
       }
 
       if (exception != null) {

+ 1 - 3
instrumentation/restlet/restlet-2.0/library/src/main/java/io/opentelemetry/instrumentation/restlet/v2_0/TracingFilter.java

@@ -11,7 +11,6 @@ import io.opentelemetry.context.Context;
 import io.opentelemetry.context.Scope;
 import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
 import io.opentelemetry.instrumentation.api.servlet.ServerSpanNaming;
-import io.opentelemetry.instrumentation.restlet.v2_0.internal.RestletServerSpanNaming;
 import org.restlet.Request;
 import org.restlet.Response;
 import org.restlet.resource.ResourceException;
@@ -40,8 +39,7 @@ final class TracingFilter extends Filter {
       scope = context.makeCurrent();
     }
 
-    ServerSpanNaming.updateServerSpanName(
-        context, CONTROLLER, RestletServerSpanNaming.SERVER_SPAN_NAME, path);
+    ServerSpanNaming.updateServerSpanName(context, CONTROLLER, (ctx, s) -> s, path);
 
     Throwable statusThrowable = null;
     try {

+ 0 - 23
instrumentation/restlet/restlet-2.0/library/src/main/java/io/opentelemetry/instrumentation/restlet/v2_0/internal/RestletServerSpanNaming.java

@@ -1,23 +0,0 @@
-/*
- * Copyright The OpenTelemetry Authors
- * SPDX-License-Identifier: Apache-2.0
- */
-
-package io.opentelemetry.instrumentation.restlet.v2_0.internal;
-
-import io.opentelemetry.instrumentation.api.servlet.ServerSpanNameSupplier;
-import io.opentelemetry.instrumentation.api.servlet.ServletContextPath;
-
-public final class RestletServerSpanNaming {
-
-  public static final ServerSpanNameSupplier<String> SERVER_SPAN_NAME =
-      (context, pattern) -> {
-        if (pattern == null || pattern.equals("")) {
-          return null;
-        }
-
-        return ServletContextPath.prepend(context, pattern);
-      };
-
-  private RestletServerSpanNaming() {}
-}

+ 4 - 0
instrumentation/servlet/servlet-common/bootstrap/build.gradle.kts

@@ -1,3 +1,7 @@
 plugins {
   id("otel.javaagent-bootstrap")
 }
+
+dependencies {
+  testImplementation("org.assertj:assertj-core")
+}

+ 1 - 1
instrumentation-api/src/main/java/io/opentelemetry/instrumentation/api/servlet/ServletContextPath.java → instrumentation/servlet/servlet-common/bootstrap/src/main/java/io/opentelemetry/javaagent/bootstrap/servlet/ServletContextPath.java

@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: Apache-2.0
  */
 
-package io.opentelemetry.instrumentation.api.servlet;
+package io.opentelemetry.javaagent.bootstrap.servlet;
 
 import io.opentelemetry.context.Context;
 import io.opentelemetry.context.ContextKey;

+ 1 - 1
instrumentation-api/src/test/java/io/opentelemetry/instrumentation/api/servlet/ServletContextPathTest.java → instrumentation/servlet/servlet-common/bootstrap/src/test/java/io/opentelemetry/javaagent/bootstrap/servlet/ServletContextPathTest.java

@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: Apache-2.0
  */
 
-package io.opentelemetry.instrumentation.api.servlet;
+package io.opentelemetry.javaagent.bootstrap.servlet;
 
 import static org.assertj.core.api.Assertions.assertThat;
 

+ 1 - 1
instrumentation/servlet/servlet-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/BaseServletHelper.java

@@ -13,10 +13,10 @@ import io.opentelemetry.api.trace.SpanContext;
 import io.opentelemetry.context.Context;
 import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
 import io.opentelemetry.instrumentation.api.servlet.ServerSpanNaming;
-import io.opentelemetry.instrumentation.api.servlet.ServletContextPath;
 import io.opentelemetry.instrumentation.api.tracer.ServerSpan;
 import io.opentelemetry.javaagent.bootstrap.servlet.AppServerBridge;
 import io.opentelemetry.javaagent.bootstrap.servlet.MappingResolver;
+import io.opentelemetry.javaagent.bootstrap.servlet.ServletContextPath;
 import java.util.function.Function;
 
 public abstract class BaseServletHelper<REQUEST, RESPONSE> {

+ 1 - 1
instrumentation/servlet/servlet-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/servlet/ServletSpanNameProvider.java

@@ -7,8 +7,8 @@ package io.opentelemetry.javaagent.instrumentation.servlet;
 
 import io.opentelemetry.context.Context;
 import io.opentelemetry.instrumentation.api.servlet.ServerSpanNameTwoArgSupplier;
-import io.opentelemetry.instrumentation.api.servlet.ServletContextPath;
 import io.opentelemetry.javaagent.bootstrap.servlet.MappingResolver;
+import io.opentelemetry.javaagent.bootstrap.servlet.ServletContextPath;
 import javax.annotation.Nullable;
 
 /** Helper class for constructing span name for given servlet/filter mapping and request. */

+ 2 - 0
instrumentation/spring/spring-webflux-5.0/javaagent/build.gradle.kts

@@ -40,6 +40,8 @@ muzzle {
 
 dependencies {
   implementation(project(":instrumentation:spring:spring-webflux-5.0:library"))
+  bootstrap(project(":instrumentation:servlet:servlet-common:bootstrap"))
+
   compileOnly("org.springframework:spring-webflux:5.0.0.RELEASE")
   compileOnly("io.projectreactor.ipc:reactor-netty:0.7.0.RELEASE")
 

+ 1 - 1
instrumentation/spring/spring-webflux-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webflux/server/HandlerAdapterInstrumentation.java

@@ -19,8 +19,8 @@ import static net.bytebuddy.matcher.ElementMatchers.takesArguments;
 import io.opentelemetry.api.trace.Span;
 import io.opentelemetry.context.Context;
 import io.opentelemetry.context.Scope;
-import io.opentelemetry.instrumentation.api.servlet.ServletContextPath;
 import io.opentelemetry.instrumentation.api.tracer.ServerSpan;
+import io.opentelemetry.javaagent.bootstrap.servlet.ServletContextPath;
 import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
 import io.opentelemetry.javaagent.extension.instrumentation.TypeTransformer;
 import net.bytebuddy.asm.Advice;

+ 1 - 1
instrumentation/spring/spring-webflux-5.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/spring/webflux/server/RouteOnSuccessOrError.java

@@ -7,8 +7,8 @@ package io.opentelemetry.javaagent.instrumentation.spring.webflux.server;
 
 import io.opentelemetry.api.trace.Span;
 import io.opentelemetry.context.Context;
-import io.opentelemetry.instrumentation.api.servlet.ServletContextPath;
 import io.opentelemetry.instrumentation.api.tracer.ServerSpan;
+import io.opentelemetry.javaagent.bootstrap.servlet.ServletContextPath;
 import java.util.function.BiConsumer;
 import java.util.regex.Pattern;
 import org.springframework.web.reactive.function.server.HandlerFunction;

+ 2 - 0
instrumentation/spring/spring-webmvc-3.1/javaagent/build.gradle.kts

@@ -20,6 +20,8 @@ muzzle {
 val versions: Map<String, String> by project
 
 dependencies {
+  bootstrap(project(":instrumentation:servlet:servlet-common:bootstrap"))
+
   compileOnly("org.springframework:spring-webmvc:3.1.0.RELEASE")
   compileOnly("javax.servlet:javax.servlet-api:3.1.0")
 //  compileOnly("org.springframework:spring-webmvc:2.5.6")

+ 1 - 1
instrumentation/spring/spring-webmvc-3.1/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/springwebmvc/SpringWebMvcServerSpanNaming.java

@@ -6,7 +6,7 @@
 package io.opentelemetry.javaagent.instrumentation.springwebmvc;
 
 import io.opentelemetry.instrumentation.api.servlet.ServerSpanNameSupplier;
-import io.opentelemetry.instrumentation.api.servlet.ServletContextPath;
+import io.opentelemetry.javaagent.bootstrap.servlet.ServletContextPath;
 import javax.servlet.http.HttpServletRequest;
 import org.springframework.web.servlet.HandlerMapping;
 

+ 2 - 0
instrumentation/struts-2.3/javaagent/build.gradle.kts

@@ -11,6 +11,8 @@ muzzle {
 }
 
 dependencies {
+  bootstrap(project(":instrumentation:servlet:servlet-common:bootstrap"))
+
   library("org.apache.struts:struts2-core:2.3.1")
 
   // There was no 2.4 version at all.

+ 1 - 1
instrumentation/struts-2.3/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/struts2/StrutsServerSpanNaming.java

@@ -7,7 +7,7 @@ package io.opentelemetry.javaagent.instrumentation.struts2;
 
 import com.opensymphony.xwork2.ActionProxy;
 import io.opentelemetry.instrumentation.api.servlet.ServerSpanNameSupplier;
-import io.opentelemetry.instrumentation.api.servlet.ServletContextPath;
+import io.opentelemetry.javaagent.bootstrap.servlet.ServletContextPath;
 
 public class StrutsServerSpanNaming {
 

+ 2 - 0
instrumentation/tapestry-5.4/javaagent/build.gradle.kts

@@ -16,6 +16,8 @@ otelJava {
 }
 
 dependencies {
+  bootstrap(project(":instrumentation:servlet:servlet-common:bootstrap"))
+
   library("org.apache.tapestry:tapestry-core:5.4.0")
 
   testImplementation("org.eclipse.jetty:jetty-webapp:8.0.0.v20110901")

+ 1 - 1
instrumentation/tapestry-5.4/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/tapestry/TapestryServerSpanNaming.java

@@ -6,7 +6,7 @@
 package io.opentelemetry.javaagent.instrumentation.tapestry;
 
 import io.opentelemetry.instrumentation.api.servlet.ServerSpanNameSupplier;
-import io.opentelemetry.instrumentation.api.servlet.ServletContextPath;
+import io.opentelemetry.javaagent.bootstrap.servlet.ServletContextPath;
 
 public class TapestryServerSpanNaming {
 

+ 4 - 1
instrumentation/vaadin-14.2/javaagent/build.gradle.kts

@@ -51,10 +51,13 @@ tasks {
 }
 
 dependencies {
-  compileOnly("com.vaadin:flow-server:2.2.0")
   compileOnly("com.google.auto.value:auto-value-annotations")
   annotationProcessor("com.google.auto.value:auto-value")
 
+  bootstrap(project(":instrumentation:servlet:servlet-common:bootstrap"))
+
+  compileOnly("com.vaadin:flow-server:2.2.0")
+
   add("vaadin16TestImplementation", "com.vaadin:vaadin-spring-boot-starter:16.0.0")
   add("vaadin142TestImplementation", "com.vaadin:vaadin-spring-boot-starter:14.2.0")
 

+ 1 - 1
instrumentation/vaadin-14.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vaadin/VaadinHelper.java

@@ -13,7 +13,7 @@ import com.vaadin.flow.router.Location;
 import io.opentelemetry.context.Context;
 import io.opentelemetry.instrumentation.api.instrumenter.Instrumenter;
 import io.opentelemetry.instrumentation.api.servlet.ServerSpanNaming;
-import io.opentelemetry.instrumentation.api.servlet.ServletContextPath;
+import io.opentelemetry.javaagent.bootstrap.servlet.ServletContextPath;
 import javax.annotation.Nullable;
 
 public class VaadinHelper {

+ 2 - 0
instrumentation/wicket-8.0/javaagent/build.gradle.kts

@@ -12,6 +12,8 @@ muzzle {
 }
 
 dependencies {
+  bootstrap(project(":instrumentation:servlet:servlet-common:bootstrap"))
+
   library("org.apache.wicket:wicket:8.0.0")
 
   testImplementation(project(":testing-common"))

+ 1 - 1
instrumentation/wicket-8.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/wicket/WicketServerSpanNameing.java

@@ -6,7 +6,7 @@
 package io.opentelemetry.javaagent.instrumentation.wicket;
 
 import io.opentelemetry.instrumentation.api.servlet.ServerSpanNameSupplier;
-import io.opentelemetry.instrumentation.api.servlet.ServletContextPath;
+import io.opentelemetry.javaagent.bootstrap.servlet.ServletContextPath;
 import org.apache.wicket.core.request.handler.IPageClassRequestHandler;
 import org.apache.wicket.request.cycle.RequestCycle;
 

+ 2 - 3
settings.gradle.kts

@@ -218,9 +218,8 @@ include(":instrumentation:jaxrs-client:jaxrs-client-2.0:jaxrs-client-2.0-resteas
 include(":instrumentation:jaxws:jaxws-2.0:javaagent")
 include(":instrumentation:jaxws:jaxws-2.0-arquillian-testing")
 include(":instrumentation:jaxws:jaxws-2.0-axis2-1.6:javaagent")
-include(":instrumentation:jaxws:jaxws-2.0-axis2-1.6:library")
 include(":instrumentation:jaxws:jaxws-2.0-cxf-3.0:javaagent")
-include(":instrumentation:jaxws:jaxws-2.0-cxf-3.0:library")
+include(":instrumentation:jaxws:jaxws-2.0-cxf-3.0:javaagent-unit-tests")
 include(":instrumentation:jaxws:jaxws-2.0-metro-2.2:javaagent")
 include(":instrumentation:jaxws:jaxws-2.0-common-testing")
 include(":instrumentation:jaxws:jaxws-2.0-tomee-testing")
@@ -241,7 +240,7 @@ include(":instrumentation:jetty-httpclient:jetty-httpclient-9.2:library")
 include(":instrumentation:jetty-httpclient:jetty-httpclient-9.2:testing")
 include(":instrumentation:jms-1.1:javaagent")
 include(":instrumentation:jms-1.1:javaagent-unit-tests")
-include(":instrumentation:jsf:jsf-common:library")
+include(":instrumentation:jsf:jsf-common:javaagent")
 include(":instrumentation:jsf:jsf-common:testing")
 include(":instrumentation:jsf:jsf-mojarra-1.2:javaagent")
 include(":instrumentation:jsf:jsf-myfaces-1.2:javaagent")