import java.util.HashMap;
import java.util.Map;
import java.util.Arrays;
public class HeaderParser {
/**
* Parses header arguments for staging environments with fallback logic.
*
* @param headers A map of header names to values.
* @param stagingValues A map of staging environment specific values.
* @param defaultValues A map of default values to use if staging values are not found.
* @return A map of header names to their parsed values.
*/
public static Map<String, String> parseHeaders(Map<String, String> headers,
Map<String, String> stagingValues,
Map<String, String> defaultValues) {
Map<String, String> parsedHeaders = new HashMap<>();
for (Map.Entry<String, String> entry : headers.entrySet()) {
String headerName = entry.getKey();
String headerValue = entry.getValue().trim(); // Trim whitespace
// Check for staging value
if (stagingValues != null && stagingValues.containsKey(headerName)) {
parsedHeaders.put(headerName, stagingValues.get(headerName).trim());
continue;
}
// Check for default value
if (defaultValues != null && defaultValues.containsKey(headerName)) {
parsedHeaders.put(headerName, defaultValues.get(headerName).trim());
continue;
}
// If neither staging nor default value is found, use the original header value
parsedHeaders.put(headerName, headerValue);
}
return parsedHeaders;
}
public static void main(String[] args) {
// Example Usage
Map<String, String> headers = new HashMap<>();
headers.put("X-Staging-Value", "staging_data");
headers.put("Content-Type", "application/json");
headers.put("User-Agent", "MyApplication");
Map<String, String> stagingValues = new HashMap<>();
stagingValues.put("X-Staging-Value", "staging_data_override");
stagingValues.put("Cache-Control", "no-cache");
Map<String, String> defaultValues = new HashMap<>();
defaultValues.put("Retry-After", "60");
Map<String, String> parsedHeaders = parseHeaders(headers, stagingValues, defaultValues);
System.out.println(parsedHeaders);
}
}
Add your comment