[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[sdx-developers] FieldList
From: |
Pierrick Brihaye |
Subject: |
[sdx-developers] FieldList |
Date: |
Mon, 12 Jul 2004 11:19:46 +0200 |
User-agent: |
Mozilla/5.0 (Windows; U; Win98; fr-FR; rv:1.6) Gecko/20040113 |
Re,
Pierrick Brihaye a écrit :
(ou, plus précisément, partout où on peut avoir une fieldList).
A propos de FieldList, je suis en train de regarder le code de
LuceneDocumentBase.java.
String ref =
l_fieldListConf.getAttribute(Repository.ConfigurationNode.REF, null);
if (Utilities.checkString(ref)) {
Si je comprend bien, on cherche à récupérer une FieldList globale via
l'attribut REF, fieldlist à laquelle on pourra éventuellement ajouter
des champs "locaux". OK.
Par contre, je tique sur :
if (appFieldLists != null)
this._fieldList = (FieldList) appFieldLists.get(ref);
this._fieldList = (FieldList) this._fieldList.clone();
Ca veut donc dire que, pendant un très court instant, la FieldList de
l'instance de SDXDocumentBase est la *même* que la FieldListGlobale ?
Wow ! Quid si la FieldList globale est modifiée/détruite pendant ce temps ?
Ne vaut-il mieux pas :
if (appFieldLists != null)
this._fieldList = (FieldList) appFieldLists.get(ref).clone();
... ou, mieux, une instanciation intermédiaire, éventuellement
synchronisée ?
synchronized (appFieldLists) {
FieldList tmpFieldList = (FieldList) appFieldLists.get(ref);
this._fieldList = tmpFieldList.clone();
}
Il y a un truc que je ne saisis pas bien non plus ici :
Reprise de FieldList globale :
this._fieldList = (FieldList) super.setUpSdxObject(this._fieldList);
this._fieldList.configure(configuration);//going to add any additional
fields to this l_fieldListConf reference
FieldList locale :
this._fieldList = ConfigurationUtils.configureFieldList(super.getLog(),
getServiceManager(), Utilities.createNewReadOnlyContext(getContext()),
new DefaultIDGenerator().generate(), configuration);
this._fieldList =
configurationUtils.configureLuceneFieldList(super.getLog(),
super.getContext(), this._fieldList);
i.e. dans un cas on initialise "à la main" et dans l'autre on le fait en
se servant des utilitaires (qui seraient peut-être également à
rationnaliser eux aussi car, pourquoi déporter la configuration en
dehors de la classe ?).
Par ailleurs, les commentaires de cette méthode seraient peut-être à
revoir : il y a eu des rechercher/remplacer
Mes 2 centimes,
--
Pierrick Brihaye, informaticien
Service régional de l'Inventaire
DRAC Bretagne
mailto:address@hidden
+33 (0)2 99 29 67 78