1. import java.util.HashMap;
  2. import java.util.Map;
  3. import java.util.Arrays;
  4. public class HeaderParser {
  5. /**
  6. * Parses header arguments for staging environments with fallback logic.
  7. *
  8. * @param headers A map of header names to values.
  9. * @param stagingValues A map of staging environment specific values.
  10. * @param defaultValues A map of default values to use if staging values are not found.
  11. * @return A map of header names to their parsed values.
  12. */
  13. public static Map<String, String> parseHeaders(Map<String, String> headers,
  14. Map<String, String> stagingValues,
  15. Map<String, String> defaultValues) {
  16. Map<String, String> parsedHeaders = new HashMap<>();
  17. for (Map.Entry<String, String> entry : headers.entrySet()) {
  18. String headerName = entry.getKey();
  19. String headerValue = entry.getValue().trim(); // Trim whitespace
  20. // Check for staging value
  21. if (stagingValues != null && stagingValues.containsKey(headerName)) {
  22. parsedHeaders.put(headerName, stagingValues.get(headerName).trim());
  23. continue;
  24. }
  25. // Check for default value
  26. if (defaultValues != null && defaultValues.containsKey(headerName)) {
  27. parsedHeaders.put(headerName, defaultValues.get(headerName).trim());
  28. continue;
  29. }
  30. // If neither staging nor default value is found, use the original header value
  31. parsedHeaders.put(headerName, headerValue);
  32. }
  33. return parsedHeaders;
  34. }
  35. public static void main(String[] args) {
  36. // Example Usage
  37. Map<String, String> headers = new HashMap<>();
  38. headers.put("X-Staging-Value", "staging_data");
  39. headers.put("Content-Type", "application/json");
  40. headers.put("User-Agent", "MyApplication");
  41. Map<String, String> stagingValues = new HashMap<>();
  42. stagingValues.put("X-Staging-Value", "staging_data_override");
  43. stagingValues.put("Cache-Control", "no-cache");
  44. Map<String, String> defaultValues = new HashMap<>();
  45. defaultValues.put("Retry-After", "60");
  46. Map<String, String> parsedHeaders = parseHeaders(headers, stagingValues, defaultValues);
  47. System.out.println(parsedHeaders);
  48. }
  49. }

Add your comment