[Top][All Lists]
[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [sdx-developers] <sdx:uploadDocuments> remarques et suggestions,
Pierrick Brihaye <=