if (fields == null || fields.size() == 0) {
applicationData.setData(values);
}
//if there are keys in the values map that aren't in the fields set, its a bad request
else if (!fields.containsAll(values.keySet())) {
throw new ProtocolException(HttpServletResponse.SC_BAD_REQUEST, "Fields parameter must either be empty or contain keys " +
"for all name value pairs sent in request.");
}
//we have a partial update - we know that the fields set contains keys for all the entries in the values
//map (due to the check above), so we can just enumerate over it now to finish our work. So we want to remove
//any fields found in the fields set that are not found in the values map and update the rest.