1. import java.util.HashMap;
  2. import java.util.Map;
  3. class HeaderTruncator {
  4. /**
  5. * Truncates header metadata for dry-run scenarios.
  6. * Handles edge cases like null headers and empty header values.
  7. *
  8. * @param headers A map of header names to values.
  9. * @param maxHeaderLength The maximum allowed length for each header value.
  10. * @return A new map with truncated header values. Returns an empty map if input is null.
  11. */
  12. public static Map<String, String> truncateHeaders(Map<String, String> headers, int maxHeaderLength) {
  13. if (headers == null) {
  14. return new HashMap<>(); // Return empty map if input is null
  15. }
  16. Map<String, String> truncatedHeaders = new HashMap<>();
  17. for (Map.Entry<String, String> entry : headers.entrySet()) {
  18. String headerName = entry.getKey();
  19. String headerValue = entry.getValue();
  20. if (headerValue == null) {
  21. truncatedHeaders.put(headerName, ""); // Handle null header values
  22. } else {
  23. if (headerValue.length() > maxHeaderLength) {
  24. truncatedHeaders.put(headerName, headerValue.substring(0, maxHeaderLength)); // Truncate
  25. } else {
  26. truncatedHeaders.put(headerName, headerValue); // No truncation needed
  27. }
  28. }
  29. }
  30. return truncatedHeaders;
  31. }
  32. public static void main(String[] args) {
  33. // Example Usage
  34. Map<String, String> headers = new HashMap<>();
  35. headers.put("Content-Type", "application/json");
  36. headers.put("X-Custom-Header", "This is a very long header value");
  37. headers.put("AnotherHeader", null);
  38. headers.put("ShortHeader", "short");
  39. int maxLen = 20;
  40. Map<String, String> truncated = truncateHeaders(headers, maxLen);
  41. for (Map.Entry<String, String> entry : truncated.entrySet()) {
  42. System.out.println(entry.getKey() + ": " + entry.getValue());
  43. }
  44. //Test case with null input
  45. Map<String, String> nullInput = null;
  46. Map<String, String> truncatedNull = truncateHeaders(nullInput, 20);
  47. System.out.println("Truncated Null Input: " + truncatedNull);
  48. //Test case with empty map
  49. Map<String, String> emptyMap = new HashMap<>();
  50. Map<String, String> truncatedEmpty = truncateHeaders(emptyMap, 20);
  51. System.out.println("Truncated Empty Input: " + truncatedEmpty);
  52. }
  53. }

Add your comment