4 © F. Boyer, UJF Projet JAVANAISE, UE Etude et Projet d’intergiciels, M2PGI
Principe d’utilisation de Velocity dans
Javanaise
Velocity est utilipour générer des classes d’interception
spécifiques aux objets métiers
Ces classes implantent les mêmes méthodes / Interfaces
que les objets métier
5 © F. Boyer, UJF Projet JAVANAISE, UE Etude et Projet d’intergiciels, M2PGI
Principe d’utilisation de Velocity
template contexte
Nom ref. Objet Java
Hello $name,
Welcome to Velocity name "World"
Result (Writer)
Hello World,
Welcome to Velocity
Velocity Engine
6 © F. Boyer, UJF Projet JAVANAISE, UE Etude et Projet d’intergiciels, M2PGI
HelloWorld avec Velocity
(exemple tiré de www.javaworld.com/javaworld/jw-12-2001/jw-1228-velocity-p.html)
Hello $name, Welcome to Velocity
import …;
public class Helloworld {
public static void main (String args[]) {
// get & initialize the velocity engine
VelocityEngine ve = new VelocityEngine().init();
// get the template
Template t = ve.getTemplate("helloworld.vm");
// create a context & add data
VelocityContext context = new VelocityContext();
context.put("name", "World");
// perform generation
StringWriter writer = new StringWriter();
t.merge(context, writer);
System.out.println(writer.toString());
HelloWorld.java HelloWorld.vm
7 © F. Boyer, UJF Projet JAVANAISE, UE Etude et Projet d’intergiciels, M2PGI
Utilisation de Velocity dans Javanaise
Template Contexte
Nom ref. Objet Java
package jvnGenerated;
public class Jvn$className {
#foreach ($meth in $methods)
#if ($util.isNotNull($ret))
...
#set ($needWriteLock =
($methodName.indexOf("W_") == 0))
#if ($needWriteLock)
obj.jvnLockWrite();
#elseif ($needReadLock)
obj.jvnLockRead();
#end
#end
}
util
Result (Writer)
public class JvnSentence
extends JvnObjectImpl
implements Serializable {
public SentenceJvn() {…}
public void write(String text) {…}
public String read() {…}
}
Velocity Engine
className Sentence
methods
arrayList of Method objects
(see java.lang.reflect)
8 © F. Boyer, UJF Projet JAVANAISE, UE Etude et Projet d’intergiciels, M2PGI
Principes d'implémentation d’une classe
d’interception
// Remarque : différents principes d'implémentation peuvent être adoptés
public class JvnSentence {
// appel d'une méthode applicative
public void write(String s) {
jvnLockWrite();
// appelle la méthode write sur l'objet métier
...
jvnUnLock();
}
}
1 / 9 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !