File tree Expand file tree Collapse file tree
instrumentation/wicket-8.0
common-testing/src/main/java
io/opentelemetry/javaagent/instrumentation/wicket/v8_0
javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/wicket/v8_0 Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -20,6 +20,7 @@ protected void init() {
2020 super .init ();
2121
2222 mountPage ("/exception" , ExceptionPage .class );
23+ mountResource ("/resource" , new HelloResource ());
2324 }
2425
2526 @ Override
Original file line number Diff line number Diff line change 1+ /*
2+ * Copyright The OpenTelemetry Authors
3+ * SPDX-License-Identifier: Apache-2.0
4+ */
5+
6+ package hello ;
7+
8+ import org .apache .wicket .request .resource .CharSequenceResource ;
9+ import org .apache .wicket .request .resource .IResource ;
10+ import org .apache .wicket .request .resource .ResourceReference ;
11+
12+ public class HelloResource extends ResourceReference {
13+ private static final long serialVersionUID = 1L ;
14+
15+ public HelloResource () {
16+ super ("hello-resource" );
17+ }
18+
19+ @ Override
20+ public IResource getResource () {
21+ return new CharSequenceResource ("text/plain" , "hello resource" );
22+ }
23+ }
Original file line number Diff line number Diff line change @@ -76,4 +76,21 @@ void testException() {
7676 .hasStatus (StatusData .error ())
7777 .hasException (new Exception ("test exception" ))));
7878 }
79+
80+ @ Test
81+ void testResource () {
82+ AggregatedHttpResponse response =
83+ client .get (address .resolve ("wicket-test/resource" ).toString ()).aggregate ().join ();
84+
85+ assertThat (response .status ().code ()).isEqualTo (200 );
86+ assertThat (response .contentUtf8 ()).isEqualTo ("hello resource" );
87+
88+ testing .waitAndAssertTraces (
89+ trace ->
90+ trace .hasSpansSatisfyingExactly (
91+ span ->
92+ span .hasName ("GET " + getContextPath () + "/wicket-test/hello.HelloResource" )
93+ .hasKind (SpanKind .SERVER )
94+ .hasNoParent ()));
95+ }
7996}
Original file line number Diff line number Diff line change 1818import net .bytebuddy .matcher .ElementMatcher ;
1919import org .apache .wicket .core .request .handler .IPageClassRequestHandler ;
2020import org .apache .wicket .request .IRequestHandler ;
21+ import org .apache .wicket .request .handler .resource .ResourceReferenceRequestHandler ;
2122
2223class RequestHandlerExecutorInstrumentation implements TypeInstrumentation {
2324
@@ -45,6 +46,13 @@ public static void onEnter(@Advice.Argument(0) IRequestHandler handler) {
4546 WicketServerSpanNaming .getServerSpanName (),
4647 (IPageClassRequestHandler ) handler );
4748 }
49+ if (handler instanceof ResourceReferenceRequestHandler ) {
50+ HttpServerRoute .update (
51+ Java8BytecodeBridge .currentContext (),
52+ CONTROLLER ,
53+ WicketServerSpanNaming .getServerSpanNameResource (),
54+ (ResourceReferenceRequestHandler ) handler );
55+ }
4856 }
4957 }
5058}
Original file line number Diff line number Diff line change 99import io .opentelemetry .javaagent .bootstrap .servlet .ServletContextPath ;
1010import org .apache .wicket .core .request .handler .IPageClassRequestHandler ;
1111import org .apache .wicket .request .cycle .RequestCycle ;
12+ import org .apache .wicket .request .handler .resource .ResourceReferenceRequestHandler ;
1213
1314public class WicketServerSpanNaming {
1415
@@ -22,9 +23,24 @@ public class WicketServerSpanNaming {
2223 return ServletContextPath .prepend (context , filterPath + "/" + pageName );
2324 };
2425
26+ private static final HttpServerRouteGetter <ResourceReferenceRequestHandler >
27+ serverSpanNameResource =
28+ (context , handler ) -> {
29+ // using class name as page name
30+ String resourceName = handler .getResourceReference ().getClass ().getName ();
31+ // wicket filter mapping without wildcard, if wicket filter is mapped to /*
32+ // this will be an empty string
33+ String filterPath = RequestCycle .get ().getRequest ().getFilterPath ();
34+ return ServletContextPath .prepend (context , filterPath + "/" + resourceName );
35+ };
36+
2537 public static HttpServerRouteGetter <IPageClassRequestHandler > getServerSpanName () {
2638 return serverSpanName ;
2739 }
2840
41+ public static HttpServerRouteGetter <ResourceReferenceRequestHandler > getServerSpanNameResource () {
42+ return serverSpanNameResource ;
43+ }
44+
2945 private WicketServerSpanNaming () {}
3046}
You can’t perform that action at this time.
0 commit comments