Documentation nuxeo

Nuxeo propose de nombreux points d'extension. La liste et la description de ces points d'extension est disponible sur le site de nuxeo

Etendre un point d'extension

Nous avons vu dans le fichier de description XML d'exemple que l'utilisation d'un point d'extension existant se faisait via la balise /component/extension. Nous avons aussi vu que les balises filles de /component/extension étaient passées en paramètre au point d'extension étendu. Si la documentation nuxeo des points d'extension n'est pas suffisante il peut-être intéressant de retrouver cette information directement dans le code source de nuxeo.

Regardons sur l'exemple suivant :

  <extension target="org.nuxeo.ecm.core.schema.TypeService"
     point="schema">
     <schema name="ori" src="schemas/ori.xsd"  prefix="ori" />
  </extension>

Comment savoir que org.nuxeo.ecm.core.schema.TypeService attend schema comme balise fille ?

Démarche :

@XObject("schema")
public class SchemaBindingDescriptor \{
    @XNode("@name")
    public String name;
    @XNode("@src")
    public String src;
    @XNode("@prefix")
    public String prefix = "";
    @XNode("@override")
    public boolean override = false;

 Explications

@XObject("schema")

La balise fille à introduire dans le fichier de description XML de l'utilisation du point d'extension devra être <schema>

@XNode("@name")
public String name;

La balise <schema> aura un attribut name. Il n'y a pas de valeur par défaut.

@XNode("@prefix")
public String prefix = "";

La balise <schema> aura un attribut prefix. La valeur par défaut est une chaine de caractères vide.

Si on veut une explication plus précise sur l'utilité d'un attribut comme src par exemple. Il faut en regarder l'usage dans org.nuxeo.ecm.core.schema.TypeService.

On peut imaginer un point d'extension qui prend en paramètre, via son bean de configuration une classe java et que ce point d'extension la charge dynamiquement. C'est ce qui est utilisé par le point d'extension de type listener dans nuxeo


Créer un point d'extension

Nous avons vu dans le fichier de description XML d'exemple la définition d'un point d'extension de name wsUrl.

Voyons la marche à suivre :

    @Override
    public void registerContribution(Object contribution,
            String extensionPoint, ComponentInstance contributor) \{
        config.add((WsDescriptor) contribution);
    }

Notre point d'extension étant créé et configurable via son bean de configuration il va pouvoir être étendu à son tour. Exemple de wsdl-orioaiworkflow-contrib.xml qui étend ce point d'extension en précisant une configuration :

<component name="org.orioai.nuxeo.workflow.wsdlOriOaiWorkflow">
  <extension target="org.orioai.nuxeo.workflow.OriOaiWorkflowService"
    point="wsUrl">
    <configuration>
      <wsUrl>http://localhost:6580/ori-oai-workflow-spring/xfire/OriWorkflowService</wsUrl>
    </configuration>
  </extension>
</component>

Il va aussi être possible de faire appel aux services de notre point d'extension depuis les contrôleurs liés aux vues de notre « application » contenue dans nuxeo. C'est ce que nous allons voir dans les chapitres suivants.