sdx-developers
[Top][All Lists]
Advanced

[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




reply via email to

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