import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class ApiEndpointDiff {
public static void main(String[] args) {
// Sample datasets - replace with your actual data
List<ApiEndpoint> dataset1 = getApiEndpoints();
List<ApiEndpoint> dataset2 = getApiEndpoints();
if (dataset1 == null || dataset2 == null) {
System.err.println("Error: One or both datasets are null.");
return;
}
diffEndpoints(dataset1, dataset2);
}
//Helper method to create sample datasets. Replace with your data source.
private static List<ApiEndpoint> getApiEndpoints() {
List<ApiEndpoint> endpoints = new ArrayList<>();
endpoints.add(new ApiEndpoint("GET /users", "Retrieves user list", null, null));
endpoints.add(new ApiEndpoint("POST /users", "Creates a new user", null, null));
endpoints.add(new ApiEndpoint("GET /users/{id}", "Retrieves a specific user", "id", null));
endpoints.add(new ApiEndpoint("PUT /users/{id}", "Updates a user", "id", null));
endpoints.add(new ApiEndpoint("DELETE /users/{id}", "Deletes a user", "id", null));
endpoints.add(new ApiEndpoint("GET /products", "Retrieves product list", null, null));
endpoints.add(new ApiEndpoint("POST /products", "Creates a new product", null, null));
return endpoints;
}
public static void diffEndpoints(List<ApiEndpoint> dataset1, List<ApiEndpoint> dataset2) {
if (dataset1.size() != dataset2.size()) {
System.out.println("Dataset sizes differ. Cannot perform meaningful diff.");
System.out.println("Dataset 1 size: " + dataset1.size());
System.out.println("Dataset 2 size: " + dataset2.size());
return;
}
// Iterate through the datasets and compare each endpoint
for (int i = 0; i < dataset1.size(); i++) {
ApiEndpoint endpoint1 = dataset1.get(i);
ApiEndpoint endpoint2 = dataset2.get(i);
if (!endpoint1.equals(endpoint2)) {
System.out.println("--- Endpoint Comparison ---");
System.out.println("Dataset 1: " + endpoint1);
System.out.println("Dataset 2: " + endpoint2);
System.out.println("--- Differences ---");
//Compare method and parameters
if(endpoint1.getMethod() != endpoint2.getMethod()){
System.out.println("Method mismatch: " + endpoint1.getMethod() + " vs " + endpoint2.getMethod());
}
if(endpoint1.getParams() != null && endpoint2.getParams() != null) {
if(!endpoint1.getParams().equals(endpoint2.getParams())){
System.out.println("Parameters mismatch: " + endpoint1.getParams() + " vs " + endpoint2.getParams());
}
} else if ((endpoint1.getParams() != null) != (endpoint2.getParams() != null)){
System.out.println("Parameter presence mismatch: " + (endpoint1.getParams() != null ? "Present" : "Absent") + " vs " + (endpoint2.getParams() != null ? "Present" : "Absent"));
}
System.out.println("--- End of Comparison ---");
}
}
}
// Inner class representing an API endpoint
static class ApiEndpoint {
private String method;
private String description;
private Map<String, String> params; // Key: parameter name, Value: parameter type
private String id; //Optional ID
public ApiEndpoint(String method, String description, String id, Map<String, String> params) {
this.method = method;
this.description = description;
this.id = id;
this.params = params;
}
public String getMethod() {
return method;
}
public String getDescription() {
return description;
}
public Map<String, String> get
Add your comment