add status code check + cleaning the class
This commit is contained in:
parent
1900bb03ca
commit
1f85eb6260
|
@ -6,7 +6,6 @@ import com.datadoghq.trace.resolver.DDTracerFactory;
|
||||||
import com.datadoghq.trace.resolver.FactoryUtils;
|
import com.datadoghq.trace.resolver.FactoryUtils;
|
||||||
import com.datadoghq.trace.resolver.TracerConfig;
|
import com.datadoghq.trace.resolver.TracerConfig;
|
||||||
import io.opentracing.tag.Tags;
|
import io.opentracing.tag.Tags;
|
||||||
|
|
||||||
import java.net.MalformedURLException;
|
import java.net.MalformedURLException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -44,22 +43,35 @@ public class URLAsResourceName extends AbstractDecorator {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean afterSetTag(final DDSpanContext context, final String tag, final Object value) {
|
public boolean afterSetTag(final DDSpanContext context, final String tag, final Object value) {
|
||||||
//Assign resource name
|
|
||||||
try {
|
try {
|
||||||
String path = String.valueOf(value);
|
final String statusCode = (String) context.getTags().get(Tags.HTTP_STATUS.getKey());
|
||||||
try {
|
// do nothing if the status code is already set and equals to 404.
|
||||||
path = new java.net.URL(path).getPath();
|
if (statusCode != null && statusCode.equals("404")) {
|
||||||
} catch (final MalformedURLException e) {
|
|
||||||
// do nothing
|
// Get the path without host:port
|
||||||
|
String path = String.valueOf(value);
|
||||||
|
|
||||||
|
try {
|
||||||
|
path = new java.net.URL(path).getPath();
|
||||||
|
} catch (final MalformedURLException e) {
|
||||||
|
// do nothing, use the value instead of the path
|
||||||
|
}
|
||||||
|
// normalize the path
|
||||||
|
path = norm(path);
|
||||||
|
|
||||||
|
// if the verb (GET, POST ...) is present, add it
|
||||||
|
final String verb = (String) context.getTags().get(Tags.HTTP_METHOD.getKey());
|
||||||
|
if (verb != null && !verb.isEmpty()) {
|
||||||
|
path = verb + " " + path;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Assign resource name
|
||||||
|
context.setResourceName(path);
|
||||||
}
|
}
|
||||||
path = norm(path);
|
|
||||||
final String verb = (String) context.getTags().get(Tags.HTTP_METHOD.getKey());
|
|
||||||
if (verb != null && !verb.isEmpty()) {
|
|
||||||
path = verb + " " + path;
|
|
||||||
}
|
|
||||||
context.setResourceName(path);
|
|
||||||
} catch (final Throwable e) {
|
} catch (final Throwable e) {
|
||||||
// do nothing
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -81,24 +93,34 @@ public class URLAsResourceName extends AbstractDecorator {
|
||||||
return norm;
|
return norm;
|
||||||
}
|
}
|
||||||
|
|
||||||
// for tests
|
// For tests
|
||||||
List<Config.Rule> getPatterns() {
|
List<Config.Rule> getPatterns() {
|
||||||
return patterns;
|
return patterns;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// For tests
|
||||||
void setPatterns(final List<Config.Rule> patterns) {
|
void setPatterns(final List<Config.Rule> patterns) {
|
||||||
this.patterns = patterns;
|
this.patterns = patterns;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Additional properties concerning the UrlAsResourceDecorator in the YAML config */
|
||||||
public static class Config extends TracerConfig {
|
public static class Config extends TracerConfig {
|
||||||
|
|
||||||
public List<Rule> urlResourcePatterns;
|
List<Rule> urlResourcePatterns;
|
||||||
|
|
||||||
|
public List<Rule> getUrlResourcePatterns() {
|
||||||
|
return urlResourcePatterns;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUrlResourcePatterns(final List<Rule> urlResourcePatterns) {
|
||||||
|
this.urlResourcePatterns = urlResourcePatterns;
|
||||||
|
}
|
||||||
|
|
||||||
public static class Rule {
|
public static class Rule {
|
||||||
|
|
||||||
public String regex;
|
String regex;
|
||||||
public String replacement;
|
String replacement;
|
||||||
public boolean isFinal = false;
|
boolean isFinal = false;
|
||||||
|
|
||||||
public Rule() {}
|
public Rule() {}
|
||||||
|
|
||||||
|
@ -107,6 +129,30 @@ public class URLAsResourceName extends AbstractDecorator {
|
||||||
this.replacement = replacement;
|
this.replacement = replacement;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getRegex() {
|
||||||
|
return regex;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRegex(final String regex) {
|
||||||
|
this.regex = regex;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getReplacement() {
|
||||||
|
return replacement;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setReplacement(final String replacement) {
|
||||||
|
this.replacement = replacement;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isFinal() {
|
||||||
|
return isFinal;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFinal(final boolean isFinal) {
|
||||||
|
this.isFinal = isFinal;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean equals(final Object o) {
|
public boolean equals(final Object o) {
|
||||||
if (this == o) return true;
|
if (this == o) return true;
|
||||||
|
@ -117,7 +163,7 @@ public class URLAsResourceName extends AbstractDecorator {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
return Objects.hash(regex, replacement);
|
return Objects.hash(regex, replacement, isFinal);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue