AnsweredAssumed Answered

Bonjour à Tous et à Toutes,J'utilise actuellement...

Question asked by xantrax on May 10, 2007
Latest reply on Mar 27, 2008 by michaelh
Bonjour à Tous et à Toutes,

J'utilise actuellement Alfresco 2.0 sous windows avec Mysql,Tomcat 5.5 et le JDK 1.5

J'ai créé une nouvelle classe qui hérite de la classe
org.alfresco.repo.dictionary.constraint.ListOfValuesConstraint
Cette classe me permet d'aller chercher dans une nouvelle instance mysql les données contenues dans une table, mettre ces données dans une ArrayList et de passer cette liste à la méthode
setAllowedValues
de la classe héritée. De cette manière je peux bénéficier d'une contrainte de type LIST dynamique. Voici le code de ma classe

package be.test.alfresco.constraint;

import java.sql.Connection;
import java.util.ArrayList;

import org.alfresco.repo.dictionary.constraint.ListOfValuesConstraint;
import org.apache.commons.logging.Log;[quote]import org.apache.commons.logging.LogFactory;

import be.test.alfresco.utility.db.DbUtils;
import be.test.alfresco.utility.db.SqlHelper;

public class ListCiviliteConstraint extends ListOfValuesConstraint {
   private static Log logger = LogFactory.getLog("be.nsi.alfresco.constraint.DbUtils");
   
   public ListCiviliteConstraint() {
      super();
      super.setAllowedValues(getCivilite());
   }
   
   /**
    * Va rechercher la liste des Civilites dans la base de donnée
    * @return la liste des Civilites
    */
   private ArrayList getCivilite(){
      ArrayList civilites=null;
      Connection conn=null;
      
      try {
         conn = DbUtils.getDbConnection();
         civilites = SqlHelper.getAllCivilitesType(conn);
          DbUtils.closeDbConnection(conn);
      } catch (Exception e) {
         logger.error(e.getMessage());
      }[/quote]
return civilites;
   }

}
Aprés avoir testé (avec une classe test) cette classe tout fonctionne correctement.

C'est maintenant que cela ce complique :)

J'ai un fichier customModel.xml dans lequel :

Je défini ma contrainte comme ceci

<constraints>
      [b]<constraint name="Identification:ctrCivilite" type="be.test.alfresco.constraint.ListCiviliteConstraint">
      </constraint>[/b]
   </constraints>
J’applique cette contrainte sur un custom aspect
<aspect name="Identification:Personne">
         <title>Identification Personne</title>

         <properties>
            <property name="Identification:Civilite">
               <title>Civilite</title>

               <type>d:text</type>

               <constraints>
                  [b]<constraint ref="Identification:ctrCivilite" />[/b]
               </constraints>
                ………
            </property>
Je génère un jar avec mes nouvelles classes que je place dans le répertoire
webappsalfrescoWEB-INFlib
de tomcat

Je démarre Alfresco et la j'obtiens le message suivant dans le log file
org.alfresco.service.cmr.dictionary.DictionaryException: Constraint type 'be.test.alfresco.constraint.ListCiviliteConstraint' on constraint 'Identification:ctrCivilite' is not a well-known type or a valid Constraint implementation
   at org.alfresco.repo.dictionary.M2ConstraintDefinition.resolveInternal(M2ConstraintDefinition.java:176)
   at org.alfresco.repo.dictionary.M2ConstraintDefinition.resolveDependencies(M2ConstraintDefinition.java:117)
   at org.alfresco.repo.dictionary.CompiledModel.<init>(CompiledModel.java:107)
On dirait que ma nouvelle classe n'a pas été correctement déployée.

Si quelqu'un à une idée il est le bien venu ;)

Merci d'avance

Outcomes