getLogger ().debug ("No request object");
return null;
}
/* check session validity */
Session session = req.getSession (false);
if (session == null) {
getLogger ().debug ("No session object");
return null;
}
// read global parameter settings
boolean reloadable = Constants.DESCRIPTOR_RELOADABLE_DEFAULT;
if (this.settings.containsKey("reloadable")) {
reloadable = Boolean.getBoolean((String) this.settings.get("reloadable"));
}
try {
Configuration conf = this.getConfiguration (
parameters.getParameter ("descriptor", (String) this.settings.get("descriptor")), resolver,
parameters.getParameterAsBoolean("reloadable",reloadable));
String valsetstr = parameters.getParameter ( "validate-set", (String) settings.get("validate-set") );
String valstr = parameters.getParameter ( "validate", (String) settings.get("validate") );
Configuration[] desc = conf.getChildren ("parameter");
Configuration[] csets = conf.getChildren ("constraint-set");
HashMap actionMap = new HashMap ();
/*
* old obsoleted method
*/
if (valstr != null && !"".equals (valstr.trim ())) {
getLogger ().debug ("Validating parameters "
+ "as specified via 'validate' parameter");
/* get list of params to be validated */
String[] rparams = Tokenizer.tokenize (valstr, ",", false);
/* perform actuall validation */
ValidatorActionHelper result = null;
String name = null;
HashMap params = new HashMap (rparams.length);
/* put required params into hash */
for (int i = 0; i < rparams.length; i ++) {
name = rparams[i];
if (name == null || "".equals (name.trim ())) {
getLogger ().debug ("Wrong syntax of the 'validate' parameter");
return null;
}
name = name.trim ();
params.put (name, session.getAttribute (name));
}
for (int i = 0; i < rparams.length; i ++) {
name = rparams[i].trim ();
result = validateParameter (name, null, desc,
params, false);
if (!result.isOK()) {
getLogger().debug ("Validation failed for parameter " + name);
return null;
}
session.setAttribute (name, result.getObject());
actionMap.put (name, result.getObject());
}
}
/*
* new set-based method
*/
if (valsetstr != null && !"".equals (valsetstr.trim ())) {
getLogger ().debug ("Validating parameters "
+ "from given constraint-set " + valsetstr);
Configuration cset = null;
String setname = null;
int j = 0;
boolean found = false;
for (j = 0; j < csets.length; j ++) {
setname = csets[j].getAttribute ("name", "");
if (valsetstr.trim().equals (setname.trim ())) {
found = true;
break;
}
}
if (!found) {
getLogger ().debug ("Given set "
+ valsetstr
+ " does not exist in a description file");
return null;
}
cset = csets[j];
/* get the list of params to be validated */
Configuration[] set = cset.getChildren ("validate");
/* perform actuall validation */
ValidatorActionHelper result = null;
String name = null;
HashMap params = new HashMap (set.length);
getLogger ().debug ("Given set "
+ valsetstr
+ " contains " + set.length + " rules");
/* put required params into hash */
for (int i = 0; i < set.length; i ++) {
name = set[i].getAttribute ("name", "");
if ("".equals (name.trim ())) {
getLogger ().debug ("Wrong syntax "
+ " of 'validate' children nr. " + i);
return null;
}
name = name.trim ();
params.put (name, session.getAttribute (name));
}
for (int i = 0; i < set.length; i ++) {
name = set[i].getAttribute ("name", null);
result = validateParameter(name, set[i],
desc, params, false);
if (!result.isOK()) {
getLogger().debug("Validation failed for parameter " + name);
return null;
}
session.setAttribute (name, result.getObject());
actionMap.put (name, result.getObject());
}
}
getLogger().debug("All session params validated");
return Collections.unmodifiableMap (actionMap);