sdx-developers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[sdx-developers] <sdx:uploadDocuments> remarques et suggestions


From: Pierrick Brihaye
Subject: [sdx-developers] <sdx:uploadDocuments> remarques et suggestions
Date: Mon, 15 Sep 2003 14:42:01 +0200
User-agent: Mozilla/5.0 (Windows; U; Win98; fr-FR; rv:1.0.2) Gecko/20030208 Netscape/7.02

Salut,

J'ai eu le malheur de passer "/" comme paramètre "dir" lors d'un <sdx:uploadDocuments>. La récursivité étant activée par défaut, SDX a cherché à m'indexer tous les documents de mon disque courant :-) Heureusement que mes indexeurs sont sélectifs !

Je persiste donc dans la suggestion de l'autre jour, à savoir désactiver la récurisivté par défaut et proposer, à l'instar de ce qui ce faire pour <sdx:deleteDeleteDocument>, un attribut *explicite* (sauf peut-être pour les zip ?) du genre @recursive="true".

Par ailleurs, ça serait pas mal de pouvoir mettre des chemins relatifs dans "dir". Une appli pourrait ainsi livrer des fichiers statiques dans son arborescence et les référencer dans un entrepôt URL, ce qui éviterait la duplication, quelle que soit sa forme (e.g. dans sdxtest, le fichier zip doublonne avec le contenu du FSRepository).

La piste serait de récupérer le contexte. Le Framework fait ça assez bien :

//getting a working directory
if (this.workDir == null) {
  //getting the default one
  this.workDir = (File) context.get(Constants.CONTEXT_WORK_DIR);
}

//if none was provided, get a context path
org.apache.cocoon.environment.Context ctx =
(org.apache.cocoon.environment.Context) context.get(Constants.CONTEXT_ENVIRONMENT_CONTEXT);

// Determine the context directory, preferably as a file
// FIXME (SW) - this is purposely redundant with some code in CocoonServlet
// to have the same rootPath. How to avoid this ?
try {
  String rootPath = ctx.getRealPath("/");
  if (rootPath != null) {
    this.contextPath = new File(rootPath).toURL().toExternalForm();
  } else {
    String webInf = ctx.getResource("/WEB-INF").toExternalForm();
    this.contextPath =
      webInf.substring(0, webInf.length() - "WEB-INF".length());
  }
} catch (MalformedURLException e) {
  Utilities.logWarn(logger, "Could not get context directory", e);
  this.contextPath = "";
}

Le framework dispose donc d'un "contextPath" très précieux (mais privé).

Ensuite, le contexte est transmis à l'appli :

public void contextualize(Context context) throws ContextException {
if (context == null) throw new ContextException("Context provided was null", null);
  this.context = (DefaultContext) context;
}

Mais pas de contextPath :-(

Est-ce qu'on ne pourrait pas avoir une variable de ce type ?

L'objectif serait d'ajouter les chemins relatifs au <sdx:app> mentionné dans <sdx:uploadDocuments>. En l'état actuel des choses, je n'ai aucune idée sur le contexte utilisé lors d'un upload et donc, je ne peux pas utiliser de chemins relatifs :-(

A bientôt,

--
Pierrick Brihaye, informaticien
Service régional de l'Inventaire
DRAC Bretagne
mailto:address@hidden





reply via email to

[Prev in Thread] Current Thread [Next in Thread]