public void broadcast(FacesContext context) throws AbortProcessingException {
// Set up the correct context and fire our wrapped event
UIDataAdaptor dataAdaptor = getComponent();
initialRowKey = dataAdaptor.getRowKey();
UIComponent compositeParent = null;
UIComponent targetComponent = event.getComponent();
try {
if (!UIComponent.isCompositeComponent(targetComponent)) {
compositeParent = UIComponent.getCompositeComponentParent(targetComponent);
}
if (compositeParent != null) {
compositeParent.pushComponentToEL(context, null);
}
setupEventContext(context);
targetComponent.pushComponentToEL(context, null);
targetComponent.broadcast(event);
} finally {
try {
dataAdaptor.setRowKey(context, initialRowKey);
} catch (Exception e) {
LOGGER.error(e.getMessage(), e);
}
initialRowKey = null;
targetComponent.popComponentFromEL(context);
if (compositeParent != null) {
compositeParent.popComponentFromEL(context);
}
}