Code communs YAML
Différents frameworks de manipulation des fichiers YAML sont étudiés. Du code commun est mis en place afin de présenter des exemples similaires.
Cette page référence les projets communs.
Votre avis
Nobody voted on this yet
|
|
Projet parent
La racine du projet contient la déclaration du projet, multi-modules Maven, qui contiendra des modules communs et un module pour chacun des frameworks étudiés.
Module commun
Modélisation
Le module model
contient des définitions de POJOs ainsi que des services qui seront implémentés.
Dans un premier temps, de simples POJOs sont mis en place. Le premier, classe fr.ejn.tutorial.yaml.data.Person
permet de modéliser des personnes avec les propriétés suivantes.
- addresses, liste d'instance
Address
; - age, l'age avec un
int
; - name, prénom;
- size, la taille avec un
double
; - surname, nom de famille;
- vip, un boolean.
package fr.ejn.tutorial.yaml.data;
import java.util.List;
/**
* @author Etienne Jouvin
*
*/
public class Person {
private List<Address> addresses;
private int age;
private String name;
private double size;
private String surname;
private boolean vip;
/**
* @return the addresses
*/
public List<Address> getAddresses() {
return addresses;
}
/**
* @return the age
*/
public int getAge() {
return age;
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @return the size
*/
public double getSize() {
return size;
}
/**
* @return the surname
*/
public String getSurname() {
return surname;
}
/**
* @return the vip
*/
public boolean isVip() {
return vip;
}
/**
* @param addresses the addresses to set
*/
public void setAddresses(List<Address> addresses) {
this.addresses = addresses;
}
/**
* @param age the age to set
*/
public void setAge(int age) {
this.age = age;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @param size the size to set
*/
public void setSize(double size) {
this.size = size;
}
/**
* @param surname the surname to set
*/
public void setSurname(String surname) {
this.surname = surname;
}
/**
* @param vip the vip to set
*/
public void setVip(boolean vip) {
this.vip = vip;
}
}
De la même façon la classe fr.ejn.tutorial.yaml.data.Address
va permettre de modéliser les addresses d'une personne à l'aide des propriétés suivantes.
- city, la ville;
- country, le pays;
- street, le nom de la rue.
package fr.ejn.tutorial.yaml.data;
/**
* @author Etienne Jouvin
*
*/
public class Address {
private String city;
private String country;
private String street;
/**
* @return the city
*/
public String getCity() {
return city;
}
/**
* @return the country
*/
public String getCountry() {
return country;
}
/**
* @return the street
*/
public String getStreet() {
return street;
}
/**
* @param city the city to set
*/
public void setCity(String city) {
this.city = city;
}
/**
* @param country the country to set
*/
public void setCountry(String country) {
this.country = country;
}
/**
* @param street the street to set
*/
public void setStreet(String street) {
this.street = street;
}
}
Bien entendu ces exemples sont très simples et sont uniquement mis en place pour illustrer certains fonctionnalités.
Services
L'interface fr.ejn.tutorial.yaml.service.PropertiesService
permet de définir des fonctions de cahrgements de données depuis un flux de données. L'interface InputStream
est utilisée comme argument pour la source des données.
Deux fonctions sont déclarées.
- loadProperties, pour charger un ensemble de données dans une liste;
- loadProperty, pour charger seulement une donnée.
package fr.ejn.tutorial.yaml.service;
import java.io.InputStream;
import java.util.List;
/**
* Properties service definition.
*
* @author Etienne Jouvin
*
*/
public interface PropertiesService {
/**
* Load properties from an input stream.
*
* @param resource Resource to read.
* @param objectClass Type of elements read.
* @return Read elements from the input stream.
*/
<T> List<T> loadProperties(InputStream resource, Class<T> objectClass);
/**
* Load one property from an input stream.
*
* @param resource Resource to read.
* @param objectClass Type of element read.
* @return Read element from the input stream.
*/
<T> T loadProperty(InputStream resource, Class<T> objectClass);
}
Voir Aussi
Code source : http://www.dev.jouvinio.net/svn/study/trunk/yaml