@Override public boolean equals(Object obj) { if (super.equals(obj)) { ParamDomain p = (ParamDomain) obj; return _parameterName.equals(p.getParameterName()) && _isRequired == p.isRequired(); } else { return false; } }
/** * Recursively add permutations for all possible values of domains[index]. */ private static void addPermutations(String prefix, ParamDomain[] domains, int index, char delimiter, Set<String> set) { if (index + 1 > domains.length) { // no more parameters; prefix is a permutation set.add(prefix); return; } else { ParamDomain domain = domains[index]; if (domain.size() > 0) { // add permutations for each domain value of this parameter for (String domainValue : domain) { String newPrefix = prefix + delimiter + domain.getParameterName() + "=" + domainValue; addPermutations(newPrefix, domains, index + 1, '&', set); } } if (!domain.isRequired()) { // add permutations where this parameter is unspecified addPermutations(prefix, domains, index + 1, delimiter, set); } } }