Hashtable<String, String> h_userParms,
Date versDateTime) throws ServerException {
PID = Server.getPID(PID).toString();
sDefPID = Server.getPID(sDefPID).toString();
MethodParmDef[] methodParms = null;
MethodParmDef methodParm = null;
StringBuffer sb = new StringBuffer();
Hashtable<String, MethodParmDef> h_validParms =
new Hashtable<String, MethodParmDef>();
boolean isValid = true;
if (sdepreader != null) // this code will be used for the CMDA example
{
MethodDef[] methods = sdepreader.getServiceMethods(versDateTime);
// Filter out parms that are internal to the mechanism and not part
// of the abstract method definition. We just want user parms.
for (MethodDef element : methods) {
if (element.methodName.equalsIgnoreCase(methodName)) {
ArrayList<MethodParmDef> filteredParms =
new ArrayList<MethodParmDef>();
MethodParmDef[] parms = element.methodParms;
for (MethodParmDef element2 : parms) {
if (element2.parmType
.equalsIgnoreCase(MethodParmDef.USER_INPUT)) {
filteredParms.add(element2);
}
}
methodParms = filteredParms.toArray(new MethodParmDef[0]);
}
}
} else {
String message =
"[DefaultAccess] Old-style disseminators are no longer supported ";
throw new DisseminatorNotFoundException(message);
// reader = m_manager.getReader(Server.GLOBAL_CHOICE, context, PID);
// methodParms = reader.getObjectMethodParms(sDefPID, methodName, versDateTime);
}
// Put valid method parameters and their attributes into hashtable
if (methodParms != null) {
for (int i = 0; i < methodParms.length; i++) {
methodParm = methodParms[i];
h_validParms.put(methodParm.parmName, methodParm);
if (logger.isDebugEnabled()) {
logger.debug("methodParms[" + i + "]: "
+ methodParms[i].parmName + "\nlabel: "
+ methodParms[i].parmLabel + "\ndefault: "
+ methodParms[i].parmDefaultValue + "\nrequired: "
+ methodParms[i].parmRequired + "\ntype: "
+ methodParms[i].parmType);
for (String element : methodParms[i].parmDomainValues) {
logger.debug("domainValue: " + element);
}
}
}
}
if (!h_validParms.isEmpty()) {
// Iterate over valid parmameters to check for any missing required parms.
Enumeration<String> e = h_validParms.keys();
while (e.hasMoreElements()) {
String validName = e.nextElement();
MethodParmDef mp = h_validParms.get(validName);
if (mp.parmRequired && h_userParms.get(validName) == null) {
// 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 "