/**
  * Invoke on cancel check out
  *
  * @param nodeRef
  */
 private void invokeOnCancelCheckOut(NodeRef nodeRef) {
   List<QName> classes = getInvokeClasses(nodeRef);
   for (QName invokeClass : classes) {
     Collection<OnCancelCheckOut> policies = onCancelCheckOut.getList(invokeClass);
     for (OnCancelCheckOut policy : policies) {
       policy.onCancelCheckOut(nodeRef);
     }
   }
 }
 /**
  * Invoke before cancel check out
  *
  * @param workingCopy
  */
 private void invokeBeforeCancelCheckOut(NodeRef workingCopy) {
   List<QName> classes = getInvokeClasses(workingCopy);
   for (QName invokeClass : classes) {
     Collection<BeforeCancelCheckOut> policies = beforeCancelCheckOut.getList(invokeClass);
     for (BeforeCancelCheckOut policy : policies) {
       policy.beforeCancelCheckOut(workingCopy);
     }
   }
 }
 /**
  * Invoke on check in policy
  *
  * @param nodeRef
  */
 private void invokeOnCheckIn(NodeRef nodeRef) {
   List<QName> classes = getInvokeClasses(nodeRef);
   for (QName invokeClass : classes) {
     Collection<OnCheckIn> policies = onCheckIn.getList(invokeClass);
     for (OnCheckIn policy : policies) {
       policy.onCheckIn(nodeRef);
     }
   }
 }
 /**
  * Invoke on the on check out policy
  *
  * @param workingCopy
  */
 private void invokeOnCheckOut(NodeRef workingCopy) {
   List<QName> classes = getInvokeClasses(workingCopy);
   for (QName invokeClass : classes) {
     Collection<OnCheckOut> policies = onCheckOut.getList(invokeClass);
     for (OnCheckOut policy : policies) {
       policy.onCheckOut(workingCopy);
     }
   }
 }
 /**
  * Invoke before check in policy
  *
  * @param workingCopyNodeRef
  * @param versionProperties
  * @param contentUrl
  * @param keepCheckedOut
  */
 private void invokeBeforeCheckIn(
     NodeRef workingCopyNodeRef,
     Map<String, Serializable> versionProperties,
     String contentUrl,
     boolean keepCheckedOut) {
   List<QName> classes = getInvokeClasses(workingCopyNodeRef);
   for (QName invokeClass : classes) {
     Collection<BeforeCheckIn> policies = beforeCheckIn.getList(invokeClass);
     for (BeforeCheckIn policy : policies) {
       policy.beforeCheckIn(workingCopyNodeRef, versionProperties, contentUrl, keepCheckedOut);
     }
   }
 }
 /**
  * Invoke the before check out policy
  *
  * @param nodeRef
  * @param destinationParentNodeRef
  * @param destinationAssocTypeQName
  * @param destinationAssocQName
  */
 private void invokeBeforeCheckOut(
     NodeRef nodeRef,
     NodeRef destinationParentNodeRef,
     QName destinationAssocTypeQName,
     QName destinationAssocQName) {
   List<QName> classes = getInvokeClasses(nodeRef);
   for (QName invokeClass : classes) {
     Collection<BeforeCheckOut> policies = beforeCheckOut.getList(invokeClass);
     for (BeforeCheckOut policy : policies) {
       policy.beforeCheckOut(
           nodeRef, destinationParentNodeRef, destinationAssocTypeQName, destinationAssocQName);
     }
   }
 }