1. import java.util.Arrays;
  2. import java.util.HashMap;
  3. import java.util.Map;
  4. public class ArgumentParser {
  5. /**
  6. * Parses command-line arguments with retry logic.
  7. * @param args Command-line arguments.
  8. * @param config A map containing configuration parameters for retry.
  9. * @return A map containing the parsed arguments and their values.
  10. * @throws IllegalArgumentException If args is null.
  11. */
  12. public static Map<String, String> parseArguments(String[] args, Map<String, Integer> config) {
  13. if (args == null) {
  14. throw new IllegalArgumentException("Arguments cannot be null.");
  15. }
  16. Map<String, String> parsedArgs = new HashMap<>();
  17. Map<String, Integer> retryConfig = new HashMap<>(config); //avoid modifying original config
  18. for (int i = 0; i < args.length; i++) {
  19. String arg = args[i];
  20. if (arg.startsWith("--")) {
  21. String paramName = arg.substring(2); // Remove "--" prefix
  22. if (i + 1 < args.length) {
  23. String paramValue = args[i + 1];
  24. parsedArgs.put(paramName, paramValue);
  25. i++; // Skip the value argument
  26. } else {
  27. throw new IllegalArgumentException("Missing value for parameter: " + paramName);
  28. }
  29. }
  30. }
  31. return parsedArgs;
  32. }
  33. public static void main(String[] args) {
  34. //Example Usage
  35. Map<String, Integer> retryConfig = new HashMap<>();
  36. retryConfig.put("maxRetries", 3);
  37. retryConfig.put("retryDelay", 1000); // milliseconds
  38. String[] commandLineArgs = {"--name", "John Doe", "--age", "30", "--city", "New York"};
  39. try {
  40. Map<String, String> parsedArgs = parseArguments(commandLineArgs, retryConfig);
  41. System.out.println(parsedArgs);
  42. } catch (IllegalArgumentException e) {
  43. System.err.println("Error: " + e.getMessage());
  44. }
  45. }
  46. }

Add your comment