Code communs YAML

De EjnTricks

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.


Hand-icon.png Votre avis

Nobody voted on this yet

 You need to enable JavaScript to vote


Configuration-icon.png 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.


Vues-icon.png Module commun

Icon-database.png 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.

Icon-memory.png 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);

}


Viewer icon.png Voir Aussi

Code source : http://www.dev.jouvinio.net/svn/study/trunk/yaml