Surcharger un service Alfresco

cancel
Showing results for 
Search instead for 
Did you mean: 
bch
Member II

Surcharger un service Alfresco

Bonjour,

Je cherche donc à surcharger un service Alfresco et plus particulièrement NodeService. Je souhaite ajouter un comportement sur certaines méthodes et donc surcharger certaines méthodes. Voici par exemple, un extrait de ma classe :

import org.alfresco.repo.version.NodeServiceImpl;
import org.alfresco.service.cmr.repository.ChildAssociationRef;
import org.alfresco.service.cmr.repository.InvalidNodeRefException;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.namespace.QName;


public class MyNodeService extends NodeServiceImpl {

   @Override
   public ChildAssociationRef createNode(NodeRef parentRef,
         QName assocTypeQName, QName assocQName, QName nodeTypeQName)
         throws InvalidNodeRefException {
      // Begin of my code
      …
      // End of my code
      return super.createNode(parentRef, assocTypeQName, assocQName, nodeTypeQName);
   }
}

Après avoir défini ma classe, je suppose qu'il faut surcharger un bean ou quelque chose comme çà mais je ne suis pas un expert de Spring. Ma question est donc comment et où définir la surcharge du service en terme de "bean" ?

Merci d'avance (en espérant être clair dans ma question)
1 Reply
bch
Member II

Re: Surcharger un service Alfresco

Voici ma solution :

    public class NodeService extends DbNodeServiceImpl {

       private Map<String,String> synchronizedAssocs = new HashMap<String, String>();

       @Override
       public AssociationRef createAssociation(NodeRef sourceRef,
             NodeRef targetRef, QName assocTypeQName)
             throws InvalidNodeRefException, AssociationExistsException {
          …
          return super.createAssociation(sourceRef, targetRef, assocTypeQName);
       }
      
       @Override
       public void removeAssociation(NodeRef sourceRef, NodeRef targetRef,
             QName assocTypeQName) throws InvalidNodeRefException {
          …
          super.removeAssociation(sourceRef, targetRef, assocTypeQName);
       }
      
       public Map<String, String> getSynchronizedAssocs() {
          return synchronizedAssocs;
       }

       public void setSynchronizedAssocs(Map<String, String> synchronizedAssocs) {
          this.synchronizedAssocs = synchronizedAssocs;
       }
    }

et mon fichier synchro-context.xml dans le dossier shared/classes/alfresco/extension :

    <?xml version='1.0' encoding='UTF-8'?>
    <!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>

    <beans>
       <bean id="dbNodeServiceImpl" class="com.bluexml.alfresco.modules.associationSynchronization.NodeService" init-method="init" >
          <property name="dictionaryService">
             <ref bean="dictionaryService" />
          </property>
          <property name="nodeDaoService">
             <ref bean="nodeDaoService" />
          </property>
          <property name="policyComponent">
             <ref bean="policyComponent"/>
          </property>
          <property name="storeArchiveMap">
             <ref bean="storeArchiveMap"/>
          </property>
          <property name="avmNodeService">
             <ref bean="avmNodeService"/>
          </property>
          <property name="tenantService">
             <ref bean="tenantService"/>
          </property>
          <property name="synchronizedAssocs">
               <props>
               <prop key="{http://www.bluexml.com/model/content/test/1.0}test_Company_has_contact">{http://www.bluexml.com/model/content/test/1.0}test_Contact_has_contact</prop>
               </props>
          </property>
       </bean>
    </beans>