// This is a fatal error. A required method parameter does not
// appear in the list of user supplied parameters.
sb.append("The required parameter \"" + validName
+ "\" was not found in the "
+ "user-supplied parameter list.");
throw new InvalidUserParmException("[Invalid User Parameters] "
+ sb.toString());
}
}
// Iterate over each user supplied parameter name
Enumeration<String> parmNames = h_userParms.keys();
while (parmNames.hasMoreElements()) {
String parmName = parmNames.nextElement();
methodParm = h_validParms.get(parmName);
if (methodParm != null && methodParm.parmName != null) {
// Method has one or more parameters defined
// Check for default value if user-supplied value is null or empty
String value = h_userParms.get(methodParm.parmName);
if (value == null || value.equalsIgnoreCase("")) {
// Value of user-supplied parameter is null or empty
if (methodParm.parmDefaultValue != null) {
// Default value is specified for this parameter.
// Substitute default value.
h_userParms.put(methodParm.parmName,
methodParm.parmDefaultValue);
} else {
// This is a non-fatal error. There is no default specified
// for this parameter and the user has supplied no value for
// the parameter. The value of the empty string will be used
// as the value of the parameter.
logger.warn("The method parameter \""
+ methodParm.parmName
+ "\" has no default value and no "
+ "value was specified by the user. "
+ "The value of the empty string has "
+ "been assigned to this parameter.");
}
} else {
// Value of user-supplied parameter contains a value.
// Validate the supplied value against the parmDomainValues list.
String[] parmDomainValues = methodParm.parmDomainValues;
if (parmDomainValues.length > 0) {
if (!parmDomainValues[0].equalsIgnoreCase("null")) {
boolean isValidValue = false;
String userValue =
h_userParms.get(methodParm.parmName);
for (String element : parmDomainValues) {
if (userValue.equalsIgnoreCase(element)
|| element.equalsIgnoreCase("null")) {
isValidValue = true;
}
}
if (!isValidValue) {
for (int i = 0; i < parmDomainValues.length; i++) {
if (i == parmDomainValues.length - 1) {
sb.append(parmDomainValues[i]);
} else {
sb.append(parmDomainValues[i]
+ ", ");
}
}
sb
.append("The method parameter \""
+ methodParm.parmName
+ "\" with a value of \""
+ h_userParms
.get(methodParm.parmName)
+ "\" is not allowed for the method \""
+ methodName
+ "\". Allowed values for this "
+ "method include \""
+ sb.toString() + "\".");
isValid = false;
}
}
}
}
} else {
// This is a fatal error. A user-supplied parameter name does
// not match any valid parameter names for this method.
sb.append("The method parameter \"" + parmName
+ "\" is not valid for the method \"" + methodName
+ "\".");
isValid = false;
}
}
} else {
// There are no method parameters define for this method.
if (!h_userParms.isEmpty()) {
// This is an error. There are no method parameters defined for
// this method and user parameters are specified in the
// dissemination request.
Enumeration<String> e = h_userParms.keys();
while (e.hasMoreElements()) {
sb.append("The method parameter \"" + e.nextElement()
+ "\" is not valid for the method \"" + methodName
+ "\"." + "The method \"" + methodName
+ "\" defines no method parameters.");
}
throw new InvalidUserParmException("[Invalid User Parameters] "
+ sb.toString());
}
}
if (!isValid) {
throw new InvalidUserParmException("[Invalid User Parameter] "
+ sb.toString());
}
return;
}