in services/idp-core/src/main/java/org/apache/cxf/fediz/service/idp/rest/QueryResourceInfoComparator.java [70:113]
protected int getMatchingRate(final OperationResourceInfo operation, final Message message) {
List<Parameter> params = operation.getParameters();
if (params == null || params.isEmpty()) {
return 0;
}
// Get Request QueryParams
String query = (String) message.get(Message.QUERY_STRING);
String path = (String) message.get(Message.REQUEST_URI);
Map<String, List<String>> qParams = JAXRSUtils.getStructuredParams(query, "&", true, false);
Map<String, List<String>> mParams = JAXRSUtils.getMatrixParams(path, true);
// Get Request Headers
Map<?, ?> qHeader = (java.util.Map<?, ?>) message.get(Message.PROTOCOL_HEADERS);
int rate = 0;
for (Parameter p : params) {
switch (p.getType()) {
case QUERY:
if (qParams.containsKey(p.getName())) {
rate += 2;
} else if (p.getDefaultValue() == null) {
rate -= 1;
}
break;
case MATRIX:
if (mParams.containsKey(p.getName())) {
rate += 2;
} else if (p.getDefaultValue() == null) {
rate -= 1;
}
break;
case HEADER:
if (qHeader.containsKey(p.getName())) {
rate += 2;
} else if (p.getDefaultValue() == null) {
rate -= 1;
}
break;
default:
break;
}
}
return rate;
}