Recherche

Sommaire

Pages enfant
  • Principaux fichiers d'un plugin nuxeo

Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.

...

Le fichier MANIFEST.MF est le fichier de configuration principal d'un plugin OSGI.

Exemple :

Bloc de code

Manifest-Version: 1.0

...


Bundle-ManifestVersion: 1

...


Bundle-Name: Nuxeo Sample project

...


Bundle-SymbolicName: org.orioai.nuxeo.workflow;singleton:=true

...


Bundle-Version: 1.0.0

...


Bundle-Vendor: ORI-ORI.org

...


Provide-Package: org.orioai.nuxeo.workflow

...


Require-Bundle: org.nuxeo.runtime,

...


 org.nuxeo.ecm.core.api,

...


 org.nuxeo.ecm.core,

...


 org.nuxeo.ecm.webapp.core

...


Nuxeo-Component: OSGI-INF/core-types-contrib.xml,

...


 OSGI-INF/actions-contrib.xml,

...


 OSGI-INF/orioaiworkflow-service-contrib.xml,

...


 OSGI-INF/wsdl-orioaiworkflow-contrib.xml,

...


 OSGI-INF/orioainuxeo2xml-service-contrib.xml,

...


 OSGI-INF/xsl-orioainuxeo2xml-contrib.xml

...


Bundle-ClassPath: qname.jar

...


Import-Package: javax.xml.namespace

Explications

Information générale sur le plugin

...

Exemple de core-types-contrib.xml :

Bloc de code

<?xml version="1.0"?>

...


<component name="org.orioai.nuxeo.workflow.core-types">

...


  <extension target="org.nuxeo.ecm.core.schema.TypeService"

...


    point="schema">

...


    <schema name="ori" src="schemas/ori.xsd"  prefix="ori" />

...


  </extension>

...


  <extension target="org.nuxeo.ecm.core.schema.TypeService"

...


    point="doctype">

...


   

...


    <doctype name="File" extends="Document">

...


      <schema name="common" />

...


      <schema name="file" />

...


      <schema name="dublincore" />

...


      <schema name="uid" />

...


      <schema name="files" />

...


      <schema name="ori" />

...


      <facet name="Downloadable" />

...


      <facet name="Versionable" />

...


      <facet name="Publishable" />

...


      <facet name="Indexable" />

...


    <facet name="Commentable" />

...


    </doctype>

...


  </extension>

...


</component>

Explications

/component@name

Nom du composent.
Ce nom prend la forme d'une classe java mais il ne s'agit pas obligatoirement d'une classe. En effet, le plus souvent, on étend un point d'extension pour lui passer des paramètres de configuration.

/component/extension@target

Nom du composant que l'on va étendre. Correspond au /component@name du point d'extension utilisé.

/component/extension@point

Un composant peut contenir plusieurs points d'extension utilisables. On spécifie avec ce paramètre celui que l'on veut étendre.

/component/extension/*

Liste des informations que l'on va passer un point d'extension que l'on étend. Cette liste est spécifique à chaque point d'extension.

Exemple de orioaiworkflow-service-contrib.xml :

Bloc de code

<?xml version="1.0"?>

...


<component name="org.orioai.nuxeo.workflow.OriOaiWorkflowService">

...


      <implementation

...


            class="org.orioai.nuxeo.workflow.OriOaiWorkflowServiceMock" />

...


      <service>

...


            <provide

...


                  interface="org.orioai.nuxeo.workflow.OriOaiWorkflowService" />

...


      </service>

...


      <documentation>explication sur le service</documentation>

...


      <extension-point name="wsUrl">

...


            <documentation>explication sur le point d'extension</documentation>

...


            <object class="org.orioai.nuxeo.workflow.WsDescriptor" />

...


      </extension-point>

...


</component>

Explications

/component@name

Nom du composent.
Ce nom prend la forme d'une classe java. Une bonne pratique consiste à utiliser ici la même valeur que pour /component/service/provider@interface

/component/implementation@class

Classe java concrète implémentant le service

/component/service/provider@interface

Nom de l'interface java qui est implémentée par /component/implementation@class

/component/documentation

Texte d'information sur le service. Il est utile pour les personnes qui seront amenés à travailler avec votre point d'extension. Il est utilisé pour la génération automatique de la documentation de référence sur les points d'extension.

/component/extension-point@name

Nom du point d'extension offert par le composant. Il peut y avoir plusieurs balises /component/extension-point

/component/extension-point/documentation

Texte d'information sur le point d'extension

/component/extension-point/object

Nom du bean qui contiendra les configurations du point d'extension lorsqu'il sera étendu.

 

...

Le fichier deployment-fragment.xml permet justement de spécifier comment le plugin va adapter l'environnement d'exécution java dans lequel il sera appelé.

Exemple :

Bloc de code

<?xml version="1.0"?>

...


<fragment>

...


  <extension target="application#MODULE">

...


    <module>

...


      <java>$\{bundle.fileName}</java>

...


    </module>

...


  </extension>

...


  <extension target="web#CONTEXT-PARAM">

...


    <context-param>

...


      <param-name>org.jboss.seam.core.init.debug</param-name>

...


      <param-value>true</param-value>

...


    </context-param>

...


  </extension>

...


  <install>

...


    <!- Unzip the war template ->

...


    <unzip from="$\{bundle.fileName}" to="/">

...


      <include>nuxeo.war/**</include>

...


    </unzip>

...


    <!- Append .properties files ->

...


    <delete path="orioainuxeodir.tmp" />

...


    <mkdir path="orioainuxeodir.tmp" />

...


    <unzip from="$\{bundle.fileName}" to="orioainuxeodir.tmp">

...


      <include>*/.properties</include>

...


    </unzip>

...


    <append from="orioainuxeodir.tmp/OSGI-INF/l10n/messages.properties"

...


      to="nuxeo.war/WEB-INF/classes/messages.properties"

...


      addNewLine="true" />

...


    <append from="orioainuxeodir.tmp/OSGI-INF/l10n/messages_fr.properties"

...


      to="nuxeo.war/WEB-INF/classes/messages_fr.properties"

...


      addNewLine="true" />

...


    <delete path="orioainuxeodir.tmp" />

...


  </install>

...


</fragment>

 Explications :

/fragment/extension@target

Nuxeo utilise des fichiers templates (dans le répertoire nuxeo.ear/OSGI-INF/templates). la  propriété /fragment/extension@target permet de cibler ce fichier (partie avant le # sans l'extension .xml) ainsi que le positionnement dans ce fichier (partie après le # qui permet de pointer sur une balise de la forme %{MODULE}%)

/fragment/extension/*

Portion de XML qui sera intégrée dans le fichier template

/fragment/install

Contient du code de type ant permettant de faire certaines actions sur le système de fichiers de l'application.
Ici :
-         on copie le contenue du répertoire src/main/resources/nuxeo.war de notre projet vers le répertoire d'exécution de l'application java
-         On vient ajouter des chaines de caractère dans le fichier de message de l'application

Note à propos de ${bundle.fileName}

${bundle.fileName} correspond au fichier jar du plugin courant

...