cancel
Showing results for 
Search instead for 
Did you mean: 

add the behavior in the aspect

forrest43
Champ in-the-making
Champ in-the-making
I am looking for a function that when user add/modify the content in some folders, it can auto select the type according to the data and type of the content, and fullfill the corresponding properties.

So I created an aspect, add the behavior in the aspect, and add this aspect to the specific folder to  achieve the funciton.

I defined behavior as followed,
public class ScanContentBehavior implements NodeServicePolicies.BeforeCreateStorePolicy,                                 NodeServicePolicies.OnCreateStorePolicy,                                 NodeServicePolicies.BeforeCreateNodePolicy,                                 NodeServicePolicies.OnCreateNodePolicy,                                 NodeServicePolicies.OnMoveNodePolicy,                                 NodeServicePolicies.BeforeUpdateNodePolicy,                                 NodeServicePolicies.OnUpdateNodePolicy,                                 NodeServicePolicies.OnUpdatePropertiesPolicy,                                 NodeServicePolicies.BeforeDeleteNodePolicy,                                 NodeServicePolicies.OnDeleteNodePolicy,                                 NodeServicePolicies.BeforeAddAspectPolicy,                                 NodeServicePolicies.OnAddAspectPolicy,                                 NodeServicePolicies.BeforeRemoveAspectPolicy,                                 NodeServicePolicies.OnRemoveAspectPolicy,                                 NodeServicePolicies.BeforeCreateNodeAssociationPolicy,                                 NodeServicePolicies.OnCreateNodeAssociationPolicy,                                 NodeServicePolicies.OnCreateChildAssociationPolicy,                                 NodeServicePolicies.BeforeDeleteChildAssociationPolicy,                                 NodeServicePolicies.OnDeleteChildAssociationPolicy,                                 NodeServicePolicies.OnCreateAssociationPolicy,                                 NodeServicePolicies.OnDeleteAssociationPolicy{    private NodeService nodeService;    private PolicyComponent policyComponent;    private  FileFolderService fileFolderService;        // Behaviours      private Behaviour beforeCreateStorePolicy;    private Behaviour onCreateStorePolicy;    private Behaviour beforeCreateNodePolicy;    private Behaviour onCreateNodePolicy;    private Behaviour onMoveNodePolicy;    private Behaviour beforeUpdateNodePolicy;    private Behaviour onUpdateNodePolicy;    private Behaviour onUpdatePropertiesPolicy;    private Behaviour beforeDeleteNodePolicy;    private Behaviour onDeleteNodePolicy;    private Behaviour beforeAddAspectPolicy;    private Behaviour onAddAspectPolicy;    private Behaviour beforeRemoveAspectPolicy;    private Behaviour onRemoveAspectPolicy;    private Behaviour beforeCreateNodeAssociationPolicy;    private Behaviour onCreateNodeAssociationPolicy;    private Behaviour onCreateChildAssociationPolicy;    private Behaviour beforeDeleteChildAssociationPolicy;    private Behaviour onDeleteChildAssociationPolicy;    private Behaviour onCreateAssociationPolicy;    private Behaviour onDeleteAssociationPolicy;                private Logger logger = Logger.getLogger(ScanContentBehavior.class);        public void init() {       if (logger.isDebugEnabled()) logger.debug("Initializing scan content behaviors");        // Create behaviours       this.beforeCreateStorePolicy  = new JavaBehaviour(this, "beforeCreateStore", NotificationFrequency.TRANSACTION_COMMIT);       this.onCreateStorePolicy  = new JavaBehaviour(this, "onCreateStore", NotificationFrequency.TRANSACTION_COMMIT);       this.beforeCreateNodePolicy  = new JavaBehaviour(this, "beforeCreateNode", NotificationFrequency.TRANSACTION_COMMIT);       this.onCreateNodePolicy  = new JavaBehaviour(this, "onCreateNode", NotificationFrequency.TRANSACTION_COMMIT);       this.onMoveNodePolicy  = new JavaBehaviour(this, "onMoveNode", NotificationFrequency.TRANSACTION_COMMIT);       this.beforeUpdateNodePolicy  = new JavaBehaviour(this, "beforeUpdateNode", NotificationFrequency.TRANSACTION_COMMIT);       this.onUpdateNodePolicy  = new JavaBehaviour(this, "onUpdateNode", NotificationFrequency.TRANSACTION_COMMIT);       this.onUpdatePropertiesPolicy  = new JavaBehaviour(this, "onUpdateProperties", NotificationFrequency.TRANSACTION_COMMIT);       this.beforeDeleteNodePolicy  = new JavaBehaviour(this, "beforeDeleteNode", NotificationFrequency.TRANSACTION_COMMIT);       this.onDeleteNodePolicy  = new JavaBehaviour(this, "onDeleteNode", NotificationFrequency.TRANSACTION_COMMIT);       this.beforeAddAspectPolicy  = new JavaBehaviour(this, "beforeAddAspect", NotificationFrequency.TRANSACTION_COMMIT);       this.onAddAspectPolicy  = new JavaBehaviour(this, "onAddAspect", NotificationFrequency.TRANSACTION_COMMIT);       this.beforeRemoveAspectPolicy  = new JavaBehaviour(this, "beforeRemoveAspect", NotificationFrequency.TRANSACTION_COMMIT);       this.onRemoveAspectPolicy  = new JavaBehaviour(this, "onRemoveAspect", NotificationFrequency.TRANSACTION_COMMIT);       this.beforeCreateNodeAssociationPolicy  = new JavaBehaviour(this, "beforeCreateNodeAssociation", NotificationFrequency.TRANSACTION_COMMIT);       this.onCreateNodeAssociationPolicy  = new JavaBehaviour(this, "onCreateNodeAssociation", NotificationFrequency.TRANSACTION_COMMIT);       this.onCreateChildAssociationPolicy  = new JavaBehaviour(this, "onCreateChildAssociation", NotificationFrequency.TRANSACTION_COMMIT);       this.beforeDeleteChildAssociationPolicy  = new JavaBehaviour(this, "beforeDeleteChildAssociation", NotificationFrequency.TRANSACTION_COMMIT);       this.onDeleteChildAssociationPolicy  = new JavaBehaviour(this, "onDeleteChildAssociation", NotificationFrequency.TRANSACTION_COMMIT);       this.onCreateAssociationPolicy  = new JavaBehaviour(this, "onCreateAssociation", NotificationFrequency.TRANSACTION_COMMIT);       this.onDeleteAssociationPolicy  = new JavaBehaviour(this, "onDeleteAssociation", NotificationFrequency.TRANSACTION_COMMIT);               // Bind behaviours to node policies        this.policyComponent.bindClassBehaviour(NodeServicePolicies.BeforeCreateStorePolicy.QNAME, ErryContentModel.NAMESPACE_ERRY_CONTENT_SCAN, this.beforeCreateStorePolicy);        this.policyComponent.bindClassBehaviour(NodeServicePolicies.OnCreateStorePolicy.QNAME, ErryContentModel.NAMESPACE_ERRY_CONTENT_SCAN, this.onCreateStorePolicy);        this.policyComponent.bindClassBehaviour(NodeServicePolicies.BeforeCreateNodePolicy.QNAME, ErryContentModel.NAMESPACE_ERRY_CONTENT_SCAN, this.beforeCreateNodePolicy);        this.policyComponent.bindClassBehaviour(NodeServicePolicies.OnCreateNodePolicy.QNAME, ErryContentModel.NAMESPACE_ERRY_CONTENT_SCAN, this.onCreateNodePolicy);        this.policyComponent.bindClassBehaviour(NodeServicePolicies.OnMoveNodePolicy.QNAME, ErryContentModel.NAMESPACE_ERRY_CONTENT_SCAN, this.onMoveNodePolicy);        this.policyComponent.bindClassBehaviour(NodeServicePolicies.BeforeUpdateNodePolicy.QNAME, ErryContentModel.NAMESPACE_ERRY_CONTENT_SCAN, this.beforeUpdateNodePolicy);        this.policyComponent.bindClassBehaviour(NodeServicePolicies.OnUpdateNodePolicy.QNAME, ErryContentModel.NAMESPACE_ERRY_CONTENT_SCAN, this.onUpdateNodePolicy);        this.policyComponent.bindClassBehaviour(NodeServicePolicies.OnUpdatePropertiesPolicy.QNAME, ErryContentModel.NAMESPACE_ERRY_CONTENT_SCAN, this.onUpdatePropertiesPolicy);        this.policyComponent.bindClassBehaviour(NodeServicePolicies.BeforeDeleteNodePolicy.QNAME, ErryContentModel.NAMESPACE_ERRY_CONTENT_SCAN, this.beforeDeleteNodePolicy);        this.policyComponent.bindClassBehaviour(NodeServicePolicies.OnDeleteNodePolicy.QNAME, ErryContentModel.NAMESPACE_ERRY_CONTENT_SCAN, this.onDeleteNodePolicy);        this.policyComponent.bindClassBehaviour(NodeServicePolicies.BeforeAddAspectPolicy.QNAME, ErryContentModel.NAMESPACE_ERRY_CONTENT_SCAN, this.beforeAddAspectPolicy);        this.policyComponent.bindClassBehaviour(NodeServicePolicies.OnAddAspectPolicy.QNAME, ErryContentModel.NAMESPACE_ERRY_CONTENT_SCAN, this.onAddAspectPolicy);        this.policyComponent.bindClassBehaviour(NodeServicePolicies.BeforeRemoveAspectPolicy.QNAME, ErryContentModel.NAMESPACE_ERRY_CONTENT_SCAN, this.beforeRemoveAspectPolicy);        this.policyComponent.bindClassBehaviour(NodeServicePolicies.OnRemoveAspectPolicy.QNAME, ErryContentModel.NAMESPACE_ERRY_CONTENT_SCAN, this.onRemoveAspectPolicy);        this.policyComponent.bindClassBehaviour(NodeServicePolicies.BeforeCreateNodeAssociationPolicy.QNAME, ErryContentModel.NAMESPACE_ERRY_CONTENT_SCAN, this.beforeCreateNodeAssociationPolicy);        this.policyComponent.bindClassBehaviour(NodeServicePolicies.OnCreateNodeAssociationPolicy.QNAME, ErryContentModel.NAMESPACE_ERRY_CONTENT_SCAN, this.onCreateNodeAssociationPolicy);        this.policyComponent.bindClassBehaviour(NodeServicePolicies.OnCreateChildAssociationPolicy.QNAME, ErryContentModel.NAMESPACE_ERRY_CONTENT_SCAN, this.onCreateChildAssociationPolicy);        this.policyComponent.bindClassBehaviour(NodeServicePolicies.BeforeDeleteChildAssociationPolicy.QNAME, ErryContentModel.NAMESPACE_ERRY_CONTENT_SCAN, this.beforeDeleteChildAssociationPolicy);        this.policyComponent.bindClassBehaviour(NodeServicePolicies.OnDeleteChildAssociationPolicy.QNAME, ErryContentModel.NAMESPACE_ERRY_CONTENT_SCAN, this.onDeleteChildAssociationPolicy);        this.policyComponent.bindClassBehaviour(NodeServicePolicies.OnCreateAssociationPolicy.QNAME, ErryContentModel.NAMESPACE_ERRY_CONTENT_SCAN, this.onCreateAssociationPolicy);        this.policyComponent.bindClassBehaviour(NodeServicePolicies.OnDeleteAssociationPolicy.QNAME, ErryContentModel.NAMESPACE_ERRY_CONTENT_SCAN, this.onDeleteAssociationPolicy);                                    }       @Override   public void onCreateChildAssociation(ChildAssociationRef childAssocRef,         boolean isNewNode) {       NodeRef childNodeRef = childAssocRef.getChildRef();       String fileName = (String) nodeService.getProperty(childAssocRef.getChildRef(), ContentModel.PROP_NAME);       Map<QName, Serializable> map = nodeService.getProperties(childAssocRef.getChildRef());                ContentDataWithId cdi = (ContentDataWithId)nodeService.getProperty(childNodeRef, ContentModel.PROP_CONTENT);         nodeService.getProperty(childNodeRef, ContentModel.TYPE_SYSTEM_FOLDER);         nodeService.getProperty(childNodeRef, ContentModel.TYPE_FOLDER);         ByteArrayOutputStream ops = new ByteArrayOutputStream();         fileFolderService.getReader(childNodeRef).getContent(ops);         byte b[] = ops.toByteArray();         System.out.println(fileName);         System.out.println(new String(b));         }         @Override   public void onCreateNodeAssociation(ChildAssociationRef childAssocRef) {             NodeRef childNodeRef = childAssocRef.getChildRef();       String fileName = (String) nodeService.getProperty(childAssocRef.getChildRef(), ContentModel.PROP_NAME);       Map<QName, Serializable> map = nodeService.getProperties(childAssocRef.getChildRef());                ContentDataWithId cdi = (ContentDataWithId)nodeService.getProperty(childNodeRef, ContentModel.PROP_CONTENT);         nodeService.getProperty(childNodeRef, ContentModel.TYPE_SYSTEM_FOLDER);         nodeService.getProperty(childNodeRef, ContentModel.TYPE_FOLDER);         ByteArrayOutputStream ops = new ByteArrayOutputStream();         fileFolderService.getReader(childNodeRef).getContent(ops);         byte b[] = ops.toByteArray();         System.out.println(fileName);         System.out.println(new String(b));         }   @Override   public void onUpdateNode(NodeRef childNodeRef) {      if(!fileFolderService.getFileInfo(childNodeRef).isFolder()){         ContentDataWithId cdi = (ContentDataWithId)nodeService.getProperty(childNodeRef, ContentModel.PROP_CONTENT);           nodeService.getProperty(childNodeRef, ContentModel.TYPE_SYSTEM_FOLDER);           nodeService.getProperty(childNodeRef, ContentModel.TYPE_FOLDER);           ByteArrayOutputStream ops = new ByteArrayOutputStream();           fileFolderService.getReader(childNodeRef).getContent(ops);           byte b[] = ops.toByteArray();           System.out.println(new String(b));      }   }      public NodeService getNodeService() {      return nodeService;   }   public void setNodeService(NodeService nodeService) {      this.nodeService = nodeService;   }   public PolicyComponent getPolicyComponent() {      return policyComponent;   }   public void setPolicyComponent(PolicyComponent policyComponent) {      this.policyComponent = policyComponent;   }   public FileFolderService getFileFolderService() {      return fileFolderService;   }   public void setFileFolderService(FileFolderService fileFolderService) {      this.fileFolderService = fileFolderService;   }   @Override   public void onDeleteAssociation(AssociationRef nodeAssocRef) {      // TODO Auto-generated method stub   }   @Override   public void onCreateAssociation(AssociationRef nodeAssocRef) {      // TODO Auto-generated method stub   }   @Override   public void onDeleteChildAssociation(ChildAssociationRef childAssocRef) {      // TODO Auto-generated method stub   }   @Override   public void beforeDeleteChildAssociation(ChildAssociationRef childAssocRef) {      // TODO Auto-generated method stub   }   @Override   public void beforeCreateNodeAssociation(NodeRef parentNodeRef,         QName assocTypeQName, QName assocQName) {      // TODO Auto-generated method stub   }   @Override   public void onRemoveAspect(NodeRef nodeRef, QName aspectTypeQName) {      // TODO Auto-generated method stub   }   @Override   public void beforeRemoveAspect(NodeRef nodeRef, QName aspectTypeQName) {      // TODO Auto-generated method stub   }   @Override   public void onAddAspect(NodeRef nodeRef, QName aspectTypeQName) {      // TODO Auto-generated method stub   }   @Override   public void beforeAddAspect(NodeRef nodeRef, QName aspectTypeQName) {      // TODO Auto-generated method stub   }   @Override   public void onDeleteNode(ChildAssociationRef childAssocRef,         boolean isNodeArchived) {      // TODO Auto-generated method stub   }   @Override   public void beforeDeleteNode(NodeRef nodeRef) {      // TODO Auto-generated method stub   }   @Override   public void onUpdateProperties(NodeRef nodeRef,         Map<QName, Serializable> before, Map<QName, Serializable> after) {      // TODO Auto-generated method stub   }   @Override   public void beforeUpdateNode(NodeRef nodeRef) {      // TODO Auto-generated method stub         }   @Override   public void onMoveNode(ChildAssociationRef oldChildAssocRef,         ChildAssociationRef newChildAssocRef) {      // TODO Auto-generated method stub         }   @Override   public void onCreateNode(ChildAssociationRef childAssocRef) {      // TODO Auto-generated method stub         }   @Override   public void beforeCreateNode(NodeRef parentRef, QName assocTypeQName,         QName assocQName, QName nodeTypeQName) {      // TODO Auto-generated method stub               }   @Override   public void onCreateStore(NodeRef rootNodeRef) {               }   @Override   public void beforeCreateStore(QName nodeTypeQName, StoreRef storeRef) {               }}‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

What confused me is that, when I added/modified the content in the folder, only the beforeUpdateNode was triggered, I could only get the nodeRef of the folder, but I was unable to get the nodeRef of the content that I added/modified.

An other question is why OnCreateChildAssociationPolicy hasn’t been triggered when the file being created?
1 REPLY 1

erikwinlof
Confirmed Champ
Confirmed Champ
You have posted this question in the "Alfresco Share Development" forum topic, to increase the chances of getting an answer I suggest you in the future post these type of questions in the "Repository Services" forum topic.

Cheers, Erik