cancel
Showing results for 
Search instead for 
Did you mean: 

Je suis en train d'essayer de créer un type document...

serv
Champ in-the-making
Champ in-the-making
Bonjour,

Je suis en train d'essayer de créer un type document n'ayant aucun rapport avec le contentModel.
J'ai donc défini mon propre modèle mais j'ai l'impression que dans les dossiers déjà existants (de type cm:folder) on ne peut créer que des objets dérivant du contentModel. Ai-je raison ?

En effet, je me pose cette question car j'essaie de créer un type auteur qui appartient à une bibliotheque.
La définition de mon modèle est la suivante :
<type name="my:biblio">
         <title>Biblio</title>
         <parent>sys:base</parent>
         <archive>true</archive>
         <associations>
            <child-association name="my:contains">
               <source>
                  <mandatory>false</mandatory>
                  <many>true</many>
               </source>
               <target>
                  <class>sys:base</class>
                  <mandatory>false</mandatory>
                  <many>true</many>
               </target>
               <duplicate>false</duplicate>
            </child-association>
         </associations>
      </type>
       
     <type name="my:auteur">
         <title>Auteur</title>
         <parent>my:biblio</parent>
         <properties>
            <property name="my:nom">
               <type>d:text</type>
            </property>
         <property name="my:prenom">
               <type>d:text</type>
            </property>
       </properties>
     </type>
Quand j'essaie de créer mon noeud avec l'appel suivant :
this.nodeService.createNode(biblio,
            BibliothequeModel.CHILD_ASSOC_CONTAINS, QName.createQName("auteur"),
            BibliothequeModel.TYPE_AUTEUR, props);
j'obtient l'erreur :
Found 1 integrity violations:
The association source type is incorrect:
   Association: Association[ class=ClassDef[name={my.new.model}biblio], name={my.new.model}contains, target class={http://www.alfresco.org/model/system/1.0}base, source role=null, target role=null]
   Required Source Type: {my.new.model}biblio
   Actual Source Type: {http://www.alfresco.org/model/content/1.0}folder
Est-ce que cela vient bien du problème précédent ?

Merci
15 REPLIES 15

serv
Champ in-the-making
Champ in-the-making
Ah oui pardon, ce n'est pas dans le modèle que je l'ai déclaré mais dans le web-client-config-custom.xml :
 
   <config evaluator="node-type" condition="my:livre">
      <property-sheet>    
      <show-property name="name" show-in-edit-mode="false" show-in-view-mode="false"/>
      <show-property name="cm:content" show-in-edit-mode="false" show-in-view-mode="false"/>
      <show-property name="cm:created" show-in-edit-mode="false" show-in-view-mode="false"/>
      <show-property name="author" show-in-edit-mode="false" show-in-view-mode="false"/>    
      <show-property name="size" show-in-edit-mode="false" show-in-view-mode="false"/>   
      <show-property name="cm:modifier" show-in-edit-mode="false" show-in-view-mode="false"/>
      <show-property name="cm:accessed" show-in-edit-mode="false" show-in-view-mode="false"/>
      <show-property name="cm:titled" show-in-edit-mode="false" show-in-view-mode="false"/>
      <show-property name="description" show-in-edit-mode="false" show-in-view-mode="false"/>
      <show-property name="cm:creator" show-in-edit-mode="false" show-in-view-mode="false"/>
      <show-property name="cm:modified" show-in-edit-mode="false" show-in-view-mode="false"/>
         <show-property name="my:titre" />
         <show-property name="my:categorie" />
       <show-child-association name="my:auteurs" converter="com.faces.DisplayAuteurConverter"/>
      </property-sheet>
   </config>
et dans le faces-config-custom.xml :
<converter>
      <converter-id>com.faces.DisplayAuteurConverter</converter-id>
      <converter-class>com.test.repo.converter.DisplayAuteurConverter</converter-class>
   </converter>

bmagnier
Champ in-the-making
Champ in-the-making
A première vue, la configuration est bonne.
Serait-il possible d'ajouter un logger dans la classe converter, afin de vérifier qu'elle est bien utilisée?

serv
Champ in-the-making
Champ in-the-making
Si je rajoute un constructeur dans lequel je mets un logger, le log apparaît bien donc la configuration est bonne. (Je sais, c'est sale comme manière de faire mais ça marche…)
Par contre, mes méthodes, elles, ne sont pas utilisées. Comment puis-je savoir quelles sont les méthodes que je dois implémenter à partir de mon modèle et de ses propriétés ?

Ma question ce serait plutôt : Quel est le type affiché pour l'auteur : un path, un noderef ? Je dois peut-être partir de là…

serv
Champ in-the-making
Champ in-the-making
Bon, quand je mets mon converter sur une propriété, ça marche…
Dois-je supposer qu'on ne peut pas mettre de converter sur une association ???

Y a-t-il un moyen de détourner ce problème ?

Au fait, quelqu'un où sont appelées les méthodes du converter ? Ca m'aiderait peut-être à avancer…

Thanks !

thomasb
Champ in-the-making
Champ in-the-making
Bon, quand je mets mon converter sur une propriété, ça marche…
Dois-je supposer qu'on ne peut pas mettre de converter sur une association ???
J'en était arrivé à la même conclusion. Apparemment, les child-associations ne sont rendues que par le ChildAssociationGenerator d'Alfresco (codé en dur dans UIChildAssociation) qui lui-même utilise un UIChildAssociationEditor.

Y a-t-il un moyen de détourner ce problème ?
Peut-être redéfinir le UIChildAssociationEditor avec une classe dérivée, qui redéfinirait la méthode renderReadOnlyAssociations
?

…ou alors modifier ton modèle pour utiliser une propriété de type nodeRef multivaluée, et du coup pouvoir utiliser ton converter…

Au fait, quelqu'un où sont appelées les méthodes du converter ? Ca m'aiderait peut-être à avancer…
Elles sont appelées par l'infrastructure JSF. Voir par exemple les explications concernant UIOutput.

UIChildAssociationEditor fait directement le rendu HTML, donc sans utiliser de Converter.

serv
Champ in-the-making
Champ in-the-making
Merci.
J'ai trouvé quelques explications et un peu d'aide sur le forum anglophone : http://forums.alfresco.com/viewtopic.php?t=4576