/** * Validates the given input based on W3C specifications. */ private static void validate(int version, String traceId, String spanId, int traceFlags) throws IllegalArgumentException { if (version < 0 || version > 254) { throw new IllegalArgumentException("version must be within range [0, 255)"); } if (!isHex(traceId, 32)) { throw new IllegalArgumentException("invalid traceId"); } if (traceId.equals("00000000000000000000000000000000")) { throw new IllegalArgumentException("invalid traceId"); } if (!isHex(spanId, 16)) { throw new IllegalArgumentException("invalid spanId"); } if (spanId.equals("0000000000000000")) { throw new IllegalArgumentException("invalid spanId"); } if (traceFlags < 0 || traceFlags > 255) { throw new IllegalArgumentException("traceFlags must be within range [0, 255]"); } }
/** * Validates the given input based on W3C specifications. */ private static void validate(int version, String traceId, String spanId, int traceFlags) throws IllegalArgumentException { if (version < 0 || version > 254) { throw new IllegalArgumentException("version must be within range [0, 255)"); } if (!isHex(traceId, 32)) { throw new IllegalArgumentException("invalid traceId"); } if (traceId.equals("00000000000000000000000000000000")) { throw new IllegalArgumentException("invalid traceId"); } if (!isHex(spanId, 16)) { throw new IllegalArgumentException("invalid spanId"); } if (spanId.equals("0000000000000000")) { throw new IllegalArgumentException("invalid spanId"); } if (traceFlags < 0 || traceFlags > 255) { throw new IllegalArgumentException("traceFlags must be within range [0, 255]"); } }
/** * Converts traceparent from String to Traceparent object * * @return Traceparent */ public static Traceparent fromString(String s) { if (s == null || s.length() == 0) { return null; } String[] arr = s.split("-"); if (arr.length < 4) { return null; } if (!isHex(arr[0], 2)) { return null; } if (arr[0].equals("00") && arr.length > 4) { return null; } if (!isHex(arr[3], 2)) { return null; } return new Traceparent( (Character.digit(arr[0].charAt(0), 16) << 4) + Character.digit(arr[0].charAt(1), 16), arr[1], arr[2], (Character.digit(arr[3].charAt(0), 16) << 4) + Character.digit(arr[3].charAt(1), 16)); }
/** * Converts traceparent from String to Traceparent object * * @return Traceparent */ public static Traceparent fromString(String s) { if (s == null || s.length() == 0) { return null; } String[] arr = s.split("-"); if (arr.length < 4) { return null; } if (!isHex(arr[0], 2)) { return null; } if (arr[0].equals("00") && arr.length > 4) { return null; } if (!isHex(arr[3], 2)) { return null; } return new Traceparent( (Character.digit(arr[0].charAt(0), 16) << 4) + Character.digit(arr[0].charAt(1), 16), arr[1], arr[2], (Character.digit(arr[3].charAt(0), 16) << 4) + Character.digit(arr[3].charAt(1), 16)); }