* @param GroupModel The group model which holds a child of the given ID
* @param String The ID whose value is required
*/
private static Object valueOfIDExpr(GroupModel groupModel, String id) {
Object value = null;
BaseModel iteratorModel = groupModel;
if (id == null) {
return null;
}
StringTokenizer idTokenizer = new StringTokenizer(id,
NESTED_DATAMODEL_SEPARATOR);
BaseModel model = null;
while (idTokenizer.hasMoreTokens()) {
String idTok = idTokenizer.nextToken();
if (iteratorModel instanceof GroupModel) {
model = (BaseModel) ((GroupModel)iteratorModel).
getLocalMap().get(idTok);
} else if (iteratorModel instanceof ComponentModel) {
model = (BaseModel) ((ComponentModel)iteratorModel).
getLocalMap().get(idTok);
}
if (model == null) {
// Invalid child ID specified in XML navigation rules
MessageFormat msgFormat = new MessageFormat(ERR_NO_SUCH_MODEL);
log.warn(msgFormat.format(new Object[] {idTok,
iteratorModel.getId()}));
return "$" + id;
}
iteratorModel = model;
}
value = model.getValue();
return value;
}