Uploaded image for project: 'Offre de formation'
  1. Offre de formation
  2. ODF-1194

Champs de recherche dans une métadonnée composite

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Major Major
    • 2.5.0
    • 2.5.0
    • None
    • None

      Dans le service de recherche, les champs disponibles pour la recherche sont les métadonnées contenant un énumérateur (AbstractSearchFieldEnumerator).

      Ces données sont récupérées via la méthode ODFContentType.getEnumeratedMetadatas() qui elle même appelle fillEnumeratedMetas(Map<String, MetadataDefinition>).

      Dans cette méthode ainsi que dans sa méthode soeur fillEnumeratedMetas(MetadataDefinition, Map<String, MetadataDefinition>, String), on est censé faire un appel récursif vers les sous-métadonnées de chaque métadonnée.

      Sauf que ce n'est pas ce qui est réellement fait (ligne 429 à 434 puis 452 à 457) :

      if (!metadataName.endsWith(REMOTE_SUFFIX) && !_ENUMERATED_EXCLUDED_IDS.contains(metaDef.getId()) && metaDef.getEnumerator() != null)
      {
          enumeratedMetas.put(metadataPath, metaDef);
          
          fillEnumeratedMetas(metaDef, enumeratedMetas, metadataPath + "/");
      }

      Devrait plutôt être :

      if (!metadataName.endsWith(REMOTE_SUFFIX) && !_ENUMERATED_EXCLUDED_IDS.contains(metaDef.getId()))
      {
      	if (metaDef.getEnumerator() != null)
      	{
      		enumeratedMetas.put(metadataPath, metaDef);
      	}
      	else
      	{
      		fillEnumeratedMetas(metaDef, enumeratedMetas, metadataPath + "/");
      	}
      }

      Ca n'a d'ailleurs pas de sens d'appeler les sous-métadonnées d'une donnée ayant un énumérateur, elle ne devrait pas en avoir.

      Cette méthode devrait fonctionne pour les composite et les repeater.

      Il y a peut être des effets de bord.

            laurence Laurence Aumeunier
            bmaurel Bérénice Maurel
            Votes:
            2 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: