Groupe 1C (normes)

Date de création : 27 Novembre 2003
Dernière modification : 27 Novembre 2003
Diffusion : internet

1er Cas de fichier de configuration XML :

< ?xml version= "1.0 " ?>
<cas>
<host>domaine.fr</host>
<port>443</port>
<baseUri>/cas</baseUri>
<version>2.0</version>
</cas>

import java.io.IOException;
import java.net.URL;
import javax.servlet.jsp.JspException;
import org.apache.commons.digester.*;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

public class Config
{
//déclaration des variables de la classe
private static Config singleton = null;
private String authenticateURL = null;
private String validateURL = null;
private String logoutURL = null;

/**
* @return server CAS authenticate URL
*/
private String getAuthenticateURL() {
return authenticateURL;
}

/**
* @return server CAS Logout URL
*/
private String getLogoutURL() {
return logoutURL;
}

/**
* @return server CAS validate URL
*/
private String getValidateURL() {
return validateURL;
}

/**
*
* @throws IOException
* @throws JspException
*/
private config() throws IOException, JspException {
try {
   Class requestingClass = this.getClass();
     //Emplacement du fichier de config à parser à partir du répertoire classes
   URL resourceURL =    requestingClass.getResource("/properties/fr_univ_rennes1/cas.xml");
   if (resourceURL == null){
      throw new JspException ("cas.xml does not exist ");
      }

    //Création d'une instance Digester
   Digester dig = new Digester();
    //On rend l'objet disponible à la manipulation en le mettant en haut de la pile
   dig.push(this);
    //Chaque fois que "cas" sera lu à la lecture du fichier de config on fera appelle à la méthode addRoot() avec 4 paramètres
   dig.addCallMethod("cas","addRoot",4);
    //Premier paramètre de la méthode addRoot()
   dig.addCallParam("cas/hostname",0);
    //Deuxième paramètre de la méthode addRoot()
   dig.addCallParam("cas/port ",1);
    //Troisième paramètre de la méthode addRoot()
   dig.addCallParam("cas/baseUri",2);
    //Quatrième paramètre de la méthode addRoot()
   dig.addCallParam("cas/version ",3);
    //On parse le fichier dont le chemin est passé en paramètre
   dig.parse(new InputSource(resourceURL.toExternalForm()));
   }
catch (IOException e) {
   throw new JspException("Impossible to load file cas.xml : "+e);
   }
catch (SAXException e) {
   throw new JspException(e);
   }
}

/**
*
* @param server Parameter of file CASConfigFile.xml
* @param port Parameter of file CASConfigFile.xml
* @param baseURI Parameter of file CASConfigFile.xml
* @param version Parameter of file CASConfigFile.xml
*
*/
private void addRoot(String server, String port, String baseURI, String version){
String baseUrlCas = "https://" + server + ":" + port + baseURI;
authenticateURL = baseUrlCas + "/login";
logoutURL = baseUrlCas + "/logout";
validateURL = baseUrlCas + "/validate";
}

/**
*
* @return Config Instance
* @throws IOException
* @throws JspException
*/
public static Config getInstance() throws IOException, JspException {
if(singleton == null) {
   singleton = new Config();
   }
return singleton;
}
}

Dans cette exemple on s'aperçoit que la méthode addCallParam() récupère la valeur d'une balise sans attributs.
AddCallParam(java.lang.String nom_de_la_balise, int index_du_paramètre_pour_addRoot)