adding an option to skip known metadata resources
diff --git a/geronimo-opentracing-common/src/main/java/org/apache/geronimo/microprofile/opentracing/common/microprofile/server/GeronimoOpenTracingFeature.java b/geronimo-opentracing-common/src/main/java/org/apache/geronimo/microprofile/opentracing/common/microprofile/server/GeronimoOpenTracingFeature.java
index e14d2a9..73c7f28 100644
--- a/geronimo-opentracing-common/src/main/java/org/apache/geronimo/microprofile/opentracing/common/microprofile/server/GeronimoOpenTracingFeature.java
+++ b/geronimo-opentracing-common/src/main/java/org/apache/geronimo/microprofile/opentracing/common/microprofile/server/GeronimoOpenTracingFeature.java
@@ -46,6 +46,8 @@
private GeronimoOpenTracingConfig config;
private Container container;
private Collection<Pattern> skipPatterns;
+ private String globalFilterRequestSkip;
+ private boolean globalIgnoreMetadataResources;
public void setTracer(final Tracer tracer) {
this.tracer = tracer;
@@ -53,6 +55,8 @@
public void setConfig(final GeronimoOpenTracingConfig config) {
this.config = config;
+ this.globalFilterRequestSkip = config.read("server.filter.request.skip", "false");
+ this.globalIgnoreMetadataResources = Boolean.parseBoolean(config.read("server.filter.request.ignoreMetadaResources", "true"));
}
public void setContainer(final Container container) {
@@ -101,13 +105,28 @@
});
context.register(new OpenTracingServerResponseFilter())
.register(new OpenTracingServerRequestFilter(operationName, tracer,
- Boolean.parseBoolean(config.read(
- "server.filter.request.skip." + resourceInfo.getResourceClass().getName() + "_" + resourceInfo.getResourceMethod().getName(),
- config.read("server.filter.request.skip." + resourceInfo.getResourceClass().getName(),
- config.read("server.filter.request.skip", "false")))),
+ shouldSkip(resourceInfo),
Boolean.parseBoolean(config.read("server.filter.request.skipDefaultTags", "false"))));
}
+ private boolean shouldSkip(final ResourceInfo resourceInfo) {
+ if (Boolean.parseBoolean(config.read(
+ "server.filter.request.skip." + resourceInfo.getResourceClass().getName() + "_" + resourceInfo.getResourceMethod().getName(),
+ config.read("server.filter.request.skip." + resourceInfo.getResourceClass().getName(),
+ globalFilterRequestSkip)))) {
+ return true;
+ }
+ return globalIgnoreMetadataResources && isMetadataResource(resourceInfo.getResourceClass().getName());
+ }
+
+ private boolean isMetadataResource(final String name) {
+ return name.startsWith("org.apache.geronimo.microprofile.openapi.jaxrs.") ||
+ name.startsWith("org.apache.geronimo.microprofile.metrics.jaxrs.") ||
+ name.startsWith("org.apache.geronimo.microprofile.impl.health.jaxrs.") ||
+ name.startsWith("org.apache.geronimo.microprofile.reporter.storage.front.") ||
+ name.startsWith("org.microprofileext.openapi.swaggerui.");
+ }
+
private String getMethodPath(final ResourceInfo resourceInfo) {
final String classPath = ofNullable(resourceInfo.getResourceClass().getAnnotation(Path.class))
.map(Path::value).orElse("");