import java.util.HashMap;
import java.util.Map;
class HeaderTruncator {
/**
* Truncates header metadata for dry-run scenarios.
* Handles edge cases like null headers and empty header values.
*
* @param headers A map of header names to values.
* @param maxHeaderLength The maximum allowed length for each header value.
* @return A new map with truncated header values. Returns an empty map if input is null.
*/
public static Map<String, String> truncateHeaders(Map<String, String> headers, int maxHeaderLength) {
if (headers == null) {
return new HashMap<>(); // Return empty map if input is null
}
Map<String, String> truncatedHeaders = new HashMap<>();
for (Map.Entry<String, String> entry : headers.entrySet()) {
String headerName = entry.getKey();
String headerValue = entry.getValue();
if (headerValue == null) {
truncatedHeaders.put(headerName, ""); // Handle null header values
} else {
if (headerValue.length() > maxHeaderLength) {
truncatedHeaders.put(headerName, headerValue.substring(0, maxHeaderLength)); // Truncate
} else {
truncatedHeaders.put(headerName, headerValue); // No truncation needed
}
}
}
return truncatedHeaders;
}
public static void main(String[] args) {
// Example Usage
Map<String, String> headers = new HashMap<>();
headers.put("Content-Type", "application/json");
headers.put("X-Custom-Header", "This is a very long header value");
headers.put("AnotherHeader", null);
headers.put("ShortHeader", "short");
int maxLen = 20;
Map<String, String> truncated = truncateHeaders(headers, maxLen);
for (Map.Entry<String, String> entry : truncated.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
//Test case with null input
Map<String, String> nullInput = null;
Map<String, String> truncatedNull = truncateHeaders(nullInput, 20);
System.out.println("Truncated Null Input: " + truncatedNull);
//Test case with empty map
Map<String, String> emptyMap = new HashMap<>();
Map<String, String> truncatedEmpty = truncateHeaders(emptyMap, 20);
System.out.println("Truncated Empty Input: " + truncatedEmpty);
}
}
Add your comment