1. import java.util.HashMap;
  2. import java.util.Map;
  3. public class UrlParameterSplitter {
  4. /**
  5. * Splits URL parameters into a map. Handles backward compatibility by
  6. * providing default values if parameters are missing or null.
  7. *
  8. * @param urlParams A string containing URL parameters (e.g., "param1=value1&param2=value2").
  9. * @param defaultValues A map containing default values for parameters.
  10. * @return A map containing the URL parameters and their values.
  11. */
  12. public static Map<String, String> splitUrlParams(String urlParams, Map<String, String> defaultValues) {
  13. Map<String, String> params = new HashMap<>();
  14. if (urlParams == null || urlParams.isEmpty()) {
  15. return defaultValues; // Return default values if no parameters are provided.
  16. }
  17. String[] pairs = urlParams.split("&");
  18. for (String pair : pairs) {
  19. if (pair == null || pair.isEmpty()) {
  20. continue; // Skip empty pairs
  21. }
  22. String[] parts = pair.split("=");
  23. if (parts.length == 2) {
  24. String key = parts[0];
  25. String value = parts[1];
  26. params.put(key, value);
  27. } else if (parts.length == 1) {
  28. //Handle cases like "param_without_value" - use the default value
  29. String key = parts[0];
  30. String defaultValue = defaultValues.getOrDefault(key, ""); // Use default value if key not found
  31. params.put(key, defaultValue);
  32. } else {
  33. //Handle invalid parameter format (more than one '=' sign) - use the default value
  34. String key = pair;
  35. String defaultValue = defaultValues.getOrDefault(key, "");
  36. params.put(key, defaultValue);
  37. }
  38. }
  39. return params;
  40. }
  41. public static void main(String[] args) {
  42. // Example usage
  43. String urlParams = "param1=value1&param2=value2&param3";
  44. Map<String, String> defaultValues = new HashMap<>();
  45. defaultValues.put("param1", "default_value_1");
  46. defaultValues.put("param2", "default_value_2");
  47. defaultValues.put("param3", "default_value_3");
  48. Map<String, String> parsedParams = splitUrlParams(urlParams, defaultValues);
  49. System.out.println(parsedParams);
  50. }
  51. }

Add your comment