La racine du fichier de configuration est l'élément <stub-beans≷
. Son attribut
dateFormat permet de définir le pattern de conversion en objet Date (voir
SimpleDateFormat).
<stub-beans dateFormat="dd/MM/yyyy">
Chaque élément fils <stub-bean>
décrit un objet simulé qui pourra être retourné par
le contexte XMLStub. Il est défini par un id et la liste des interfaces qu'il implémente
(séparées par des virgules)
<stub-bean id="test" implements="net.sf.azote.xmlstubs.Interface">Un stub-bean décrit chaque méthode qu'il simule sous un élément
<method>
identifié
par la signature de la méthode java. Les types des paramètres sont séparés par des virgules.
<method signature="getIntValue(java.lang.String,boolean)">Pour chauqe méthode, plusieurs 'comportements' peuvent être simulés, chacun étant décrit par un élément
<case>
qui comporte une condition. Le premier cas dont la condition est valide
est utilisé pour la simulation. Un cas sans condition est toujours valide (cas par défaut) et
les cas suivants ne sont pas évalués. La condition est exprimée via le langage
JEXL. Il s'agit d'un langage très proche
du langage d'expression de la JSTL oiu des JSP 2.0. Il est utilisé notament par
Maven. Dans ces expressions, les paramètres de la méthode
peuvent être manipulés via les variables arg0...argN.
<case condition="arg0 eq '4'">Enfin, l'élément contenu dans le
<case>
décrit la valeur retournée lors de la simulation.
<value>
décrit un objet convertible depuis une String : tous les types primitifs et
les wrappers associés, Date, Calendar, mais aussi toute classe disposant d'un constructeur
prenant une String en paramètre (par exemple java.net.URL
). Pensez-y pour ajouter un
constructeur adapté dans vos objets ! Le type de l'objet cible est déterminé par le type de retour
attendu de la méthode, mais peut égallement être forcé par l'attribut optionnel className
.
<value>4</value>
<throw>
décrit la levée d'une exception, dont la classe est définie par
l'argument throwable.
<throw throwable="java.lang.IllegalArgumentException"/>
<null>
permet de retourner ... null.
<bean-ref>
permet de retourner un autre stub, identifié par son id.
<bean-ref>idOfAnotherStub</bean-ref>
<collection>
permet de retourner un ensemble d'objets. collectionClass
décrit le 'conteneur' utilisé pour cet ensemble, soit une classe de l'API des collections, soit un
tableau. Dans ce dernier cas, la classe est notée selon la syntaxe package.classeElement[]
.
Par défaut, le conteneur est java.util.ArrayList
. L'attribut
itemClass
décrit le type attendu pour les éléments de l'ensemble. Dans le cas
d'un tableau, le type de base du tableau est utilisé.
<collection collectionClass="java.util.ArrayList" itemClass="java.lang.String"> <value>1</value> <value>2</value> <value>3</value> </collection>
<map>
permet de retourner une Map d'objets.
mapClass
définit la classe du conteneur (qui doit implémenter java.util.Map
).
keyClass
définit la classe des clés, itemClass
celle des éléments.
Le corps se comporte alors d'éléments <entry>
dont le premier sous-élément
décrit la clé et le second l'item dans la Map.
<map mapClass="java.util.HashMap" keyClass="java.lang.String" itemClass="java.lang.Integer"> <entry> <value>test1</value> <value>1</value> </entry> <entry> <value>test2</value> <value>2</value> </entry> </map>
<new>
permet d'instancier un javabean, définit par l'attribut
beanClass
. Les sous éléments <property>
permettent
de positionner les valeurs de ses propriétés via ses accesseurs javabeans.
<new beanClass="net.sf.azote.xmlstubs.beans.BeanRef"> <property name="id"> <value>12</value> </property> </new>
<static>
permet de faire appel à une méthode statique d'une classe,
ce qui est très utilie pour retourner une valeur d'un énumération.
<static staticClass="net.sf.azote.xmlstubs.ColorEnum" staticMethod="getEnum(java.lang.String)" arg0="red"/>