import java.util.HashMap;
import java.util.Map;
import java.util.logging.Logger;
public class QueryStringValidator {
private static final Logger logger = Logger.getLogger(QueryStringValidator.class.getName());
public static String validateQueryString(String queryString, Map<String, String> allowedParameters) {
if (queryString == null || queryString.isEmpty()) {
logger.warning("Query string is null or empty.");
return ""; // Or handle as appropriate for your use case
}
Map<String, String> parsedParams = parseQueryString(queryString);
for (Map.Entry<String, String> entry : parsedParams.entrySet()) {
String paramName = entry.getKey();
String paramValue = entry.getValue();
if (!allowedParameters.containsKey(paramName)) {
logger.error("Invalid query parameter: " + paramName + " with value: " + paramValue);
return ""; // Or handle as appropriate. Could return null, throw exception, etc.
}
// Optionally add validation logic for the parameter value here
// Example: if (paramName.equals("age") && !isValidAge(paramValue)) { ... }
}
return queryString; // Return the original query string if all parameters are valid.
}
private static Map<String, String> parseQueryString(String queryString) {
Map<String, String> params = new HashMap<>();
if (queryString != null && !queryString.isEmpty()) {
String[] pairs = queryString.split("&");
for (String pair : pairs) {
String[] parts = pair.split("=");
if (parts.length == 2) {
String paramName = parts[0];
String paramValue = parts[1];
params.put(paramName, paramValue);
}
}
}
return params;
}
public static void main(String[] args) {
// Example usage
Map<String, String> allowedParams = new HashMap<>();
allowedParams.put("id", "true");
allowedParams.put("name", "test");
String queryString1 = "id=true&name=test&extra=value";
String queryString2 = "id=true&name=test";
String queryString3 = "id=true&name=test&age=30"; //age is not allowed
String validatedQueryString1 = validateQueryString(queryString1, allowedParams);
String validatedQueryString2 = validateQueryString(queryString2, allowedParams);
String validatedQueryString3 = validateQueryString(queryString3, allowedParams);
System.out.println("Validated Query String 1: " + validatedQueryString1);
System.out.println("Validated Query String 2: " + validatedQueryString2);
System.out.println("Validated Query String 3: " + validatedQueryString3);
}
}
Add your comment