Пример #1
0
 __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());
     }
 }
Пример #2
0
  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 );
  }