__INLINE ElementRef::ElementRef (NodeRef& nodeRef) : NodeRef(nodeRef.getDocument()) { Log_Element ( "New ElementRef=%p document=%p from noderef=%p\n", this, &document, &nodeRef ); if (nodeRef.isElement()) { setElementPtr(nodeRef.toElement().getElementPtr()); } else { setElementPtr(nodeRef.toAttribute().getParentElementPtr()); } }
void PersistenceModule::domEventDocumentTrigger ( DomEventType domEventType, ElementRef& domEventElement, NodeRef& nodeRef ) { XemProcessor& xemProc = XemProcessor::getMe(getXProcessor()); __BUILTIN_NAMESPACE_CLASS(xem) &xem = xemProc.xem; Document& document = nodeRef.getDocument(); getXProcessor().pushEnv(); Exception* exception = NULL; try { KeyIdList arguments; String eventName = DomEventMask(domEventType).toString(); getXProcessor().setString ( xem.document_event(), eventName ); arguments.push_back(xem.document_event()); String targetBranchRevId; stringPrintf ( targetBranchRevId, "%llu:%llu", _brid(document.getBranchRevId()) ); getXProcessor().setString ( xem.target_branchRevId(), targetBranchRevId ); arguments.push_back(xem.target_branchRevId()); String targetBranchName = document.getBranchRevId().branchId ? document.getStore().getBranchManager().getBranchName(document.getBranchRevId().branchId) : "no-branch"; getXProcessor().setString ( xem.target_branchName(), targetBranchName ); arguments.push_back(xem.target_branchName()); String targetRole = document.getRole(); getXProcessor().setString ( xem.target_role(), targetRole ); arguments.push_back(xem.target_role()); Log_Pers ( "Trigger event '%s' for targetBranchRevId %s\n", eventName.c_str(), targetBranchRevId.c_str() ); getXProcessor().triggerEvent ( xem.document_event(), arguments ); } catch ( Exception* e ) { exception = e; } getXProcessor().popEnv(); if ( exception ) throw ( exception ); }