<?xml version="1.0"?>
<component name="org.nuxeo.ecm.platform.routing.comments.listener.override">

  <require>org.nuxeo.ecm.platform.routing.comments.listener</require>

  <extension point="listener" target="org.nuxeo.ecm.core.event.EventServiceComponent">

    <listener async="false" class="org.nuxeo.ecm.platform.routing.core.listener.DocumentRoutingUpdateCommentsInfoListener" name="updateCommentsInfoListener" postCommit="false" priority="120">
      <event>commentAdded</event>
      <event>commentRemoved</event>
    </listener>

    <listener async="false" class="org.nuxeo.ecm.platform.routing.core.listener.DocumentRouteCreationListener" name="routeCreatedListener" postCommit="false" priority="200">
      <event>documentCreated</event>
    </listener>

    <listener async="false" class="org.nuxeo.ecm.platform.routing.core.listener.DocumentRoutingSecurityListener" name="securityListener" postCommit="false" priority="120">
      <event>beforeRouteReady</event>
    </listener>

    <listener async="false" class="org.nuxeo.ecm.platform.routing.core.listener.RoutingTaskSecurityUpdaterListener" name="routingSecurityUpdaterForActors" postCommit="false" priority="250">
      <event>workflowTaskAssigned</event>
      <event>workflowTaskReassigned</event>
      <event>workflowTaskDelegated</event>
    </listener>

    <listener async="true" class="org.nuxeo.ecm.platform.routing.core.listener.DocumentRoutingEscalationListener" name="triggerEsclationRules">
      <event>executeEscalationRules</event>
    </listener>

    <listener async="true" class="org.nuxeo.ecm.platform.routing.core.listener.DocumentRoutingWorkflowDoneListener" name="cleanOpenTasksOnWorkflowDone">
      <event>afterRouteFinish</event>
    </listener>

    <listener async="true" class="org.nuxeo.ecm.platform.routing.core.listener.RoutingTaskDeletedListener" name="deleteRoutingTaskListener">
      <event>aboutToRemove</event>
    </listener>

    <!-- Disabled since 2023, tasks cleanup is done by DocumentRouteOrphanedListener -->
    <listener async="true" class="org.nuxeo.ecm.platform.routing.core.listener.DocumentRouteDeletedListener" enabled="false" name="removeTasksForDeletedDocumentRoute" postCommit="true">
      <event>documentRemoved</event>
    </listener>
    
    <listener async="true" class="org.nuxeo.ecm.platform.routing.core.listener.DocumentRouteOrphanedListener" name="removeDocumentRoutesForDeletedDocument" postCommit="true">
      <event>documentRemoved</event>
    </listener>

  </extension>

</component>
