// If we have children, push our template on as context
if (_hasMetaRuleChildren == 1) {
context.merge(MetaRules.TemplateId, component.templateName());
}
AWBindingDictionary bindings = _bindings;
if (isPush) {
context.push();
String scopeKey = (_scopeKeyBinding != null)
? (String)_scopeKeyBinding.value(component) : null;
Map <String, Object> values;
if (_valueMapBinding != null && ((values = (Map)_valueMapBinding.value(component)) != null)) {
// ToDo: sort based on Meta (KeyData) defined rank (e.g. module -> class -> operation ...)
// ToDo: cache sort?
List<String> sortedKeys = new ArrayList(values.keySet());
Collections.sort(sortedKeys);
for (String key : sortedKeys) {
if (key.equals(scopeKeyBindingKey)) {
scopeKey = (String)values.get(key);
} else {
context.set(key, values.get(key));
}
}
}
for (int index = bindings.size() - 1; index >= 0; index--) {
AWBinding currentBinding = bindings.elementAt(index);
Object value = currentBinding.value(component);
String key = bindings.keyAt(index);
context.set(key, value);
}
if (scopeKey != null) context.setScopeKey(scopeKey);
} else {