AnsweredAssumed Answered

Custom JavaBehaviour: NotificationFrequency

Question asked by mirko79_9866 on Oct 9, 2012
Ciao,

tra la varia documentazione online, sul forum inglese e sui libri non sono riscito a trovare una risposta completa al significato e al funzionamento nei JavaBehaviour dei valori che si possono applicare come frequency:
NotificationFrequency.EVERY_EVENT
NotificationFrequency.FIRST_EVENT
NotificationFrequency.TRANSACTION_COMMIT

L'unica forse abbastanza chiara è la TRANSACTION_COMMIT : suppongo venga richiamato solo dopo il commit della transazione :mrgreen: .
Qualcuno ha trovato della documentazione o sa + nello specifico come funzionano?

Inoltre ho notato che il behaviour che ho definito viene richiamato non solo sulla policy che ho definito ma anche in altri casi, ad esempio ho definito quanto segue:


public class MyCustomBehaviour implements NodeServicePolicies.BeforeDeleteNodePolicy,NodeServicePolicies.BeforeRemoveAspectPolicy {
   //Dependencies
   private PolicyComponent policyComponent;
   private NodeService nodeService;
   
   // Behaviours
   private Behaviour beforeDeleteNode;
   private Behaviour beforeRemoveAspect;

        /**
    * Class initialization
    */
   public void init() {
      // Create behaviours
      this.beforeDeleteNode = new JavaBehaviour(this, "beforeDeleteNode",NotificationFrequency.EVERY_EVENT);
      this.beforeRemoveAspect = new JavaBehaviour(this, "beforeRemoveAspect", NotificationFrequency.FIRST_EVENT);
      // Bind behaviours to node policies
      this.policyComponent.bindClassBehaviour(NodeServicePolicies.BeforeDeleteNodePolicy.QNAME, ContentModel.TYPE_CONTENT,this.beforeDeleteNode);
      this.policyComponent.bindClassBehaviour(NodeServicePolicies.BeforeRemoveAspectPolicy.QNAME, MyModel.QNAME_MY_ASPECT, beforeRemoveAspect);
   }
      
       @Override
   public void beforeDeleteNode(final NodeRef nodeRef) {
            //Implementazione
        }

       @Override
   public void beforeRemoveAspect(final NodeRef nodeRef, QName aspectTypeQName) {
        //Implementazione
        }

il metodo beforeRemoveAspect viene richiamato non solo quando rimuovo l'aspect MyModel.QNAME_MY_ASPECT ma anche in altre circostanze che devo ancora definire (alcune volte all'aggiunta dell'aspect altre volte ricaricando la pagina dove è presente il nodo a cui ho associato l'aspect).

Qualcuno ha avuto comportamenti simili e magari sa darmi una spiegazione?

Grazie

Outcomes