AnsweredAssumed Answered

Compilación web-client y codificación de caracteres [SOLVED]

Question asked by edsari on Dec 15, 2010
El problema de la compilación lo he resuelto llevándome el entorno de desarrollo a una máquina linux, en la que la codificación de caracteres es UTF-8.
El parámetro javacencoding sigue estando a UTF-8.

Saludos

Hola, os cuento mi problema.

He seguido las instrucciones de la Wiki para añadir nuevas propiedades en el formulario de búsqueda simple. Concretamente he añadido un atributo de mi modelo que actúa a modo de palabras clave, y que tienen todos los contenidos del repositorio.

La cosa funciona, excepto cuando busco dos o más palabras. En ese caso no obtengo los resultados esperados.

Después de analizar las cadenas de búsqueda que Alfresco generaba no veía nada raro, pero por una cuestión de azar vi que cambiando el orden de los parámetros, sí que obtenía los resultados esperados. Más concretamente:

Cadena de búsqueda generada por Alfresco y que no obtiene los resultados esperados:

(TYPE:"{http://www.alfresco.org/model/content/1.0}content" 
AND
   (
      (
         +@\{http\://www.alfresco.org/model/content/1.0\}name:valle
         +@\{http\://www.alfresco.org/model/content/1.0\}name:carrascoy
      )
      (
         +@\{http\://www.murcianatural.com/model/content/1.0\}keywords:valle
         +@\{http\://www.murcianatural.com/model/content/1.0\}keywords:carrascoy
      )
      (
         +TEXT:valle
         +TEXT:carrascoy
      )
   )
)
OR
(TYPE:"{http://www.alfresco.org/model/content/1.0}folder"
AND
   (
      +@\{http\://www.alfresco.org/model/content/1.0\}name:valle
      +@\{http\://www.alfresco.org/model/content/1.0\}name:carrascoy
   )
   (
      +@\{http\://www.murcianatural.com/model/content/1.0\}keywords:valle
      +@\{http\://www.murcianatural.com/model/content/1.0\}keywords:carrascoy
   )
)

La misma cadena alterando el orden de los parámetros (el tipo de contenido va al final de la sentencia), y que sí obtiene los resultados esperados:

(
   (
      (
         +@\{http\://www.alfresco.org/model/content/1.0\}name:valle
         +@\{http\://www.alfresco.org/model/content/1.0\}name:carrascoy
      )
      (
         +@\{http\://www.murcianatural.com/model/content/1.0\}keywords:valle 
         +@\{http\://www.murcianatural.com/model/content/1.0\}keywords:carrascoy 
      )
      (
         +TEXT:valle
         +TEXT:carrascoy
      )
   )
   AND  TYPE:"{http://www.alfresco.org/model/content/1.0}content"
)
OR
(
   (
      +@\{http\://www.alfresco.org/model/content/1.0\}name:valle
      +@\{http\://www.alfresco.org/model/content/1.0\}name:carrascoy
   )
   (
      +@\{http\://www.murcianatural.com/model/content/1.0\}keywords:valle 
      +@\{http\://www.murcianatural.com/model/content/1.0\}keywords:carrascoy 
   )
   AND  TYPE:"{http://www.alfresco.org/model/content/1.0}folder"
)

Para obtener las consultas generadas habilité el debug mediante:

log4j.logger.org.alfresco.web.bean=debug

La verdad, no entiendo por qué sucede esto, pero si lo probáis, veréis que las dos consultas devuelven resultados distintos. Lo podéis probar sustituyendo el atributo keywords por el de {http://www.alfresco.org/model/content/1.0}description.
He estado buscando por el foro y no he encontrado ninguna referencia a este problema.

El caso es que no he tenido más remedio que modificar el método buildQuery de la clase org.alfresco.web.bean.SearchContext para construir la cadena de búsqueda en el orden adecuado. En principio todo me funciona correctamente y puedo buscar por el nuevo atributo. Pero ahora me ha surgido un nuevo problema con el que no contaba: ahora el cliente web no gestiona bien las tildes y la letra ñ. Evidentemente es un problema de la codificación de caracteres, pero no consigo resolverlo.

La clase modificada está en ASCII (tal y como está en el repositorio SVN de Alfresco). La compilación la he realizado en una máquina Windows (creo que el desarrollo de Alfresco también se hace en Windows), a través de Ant y siguiendo las instrucciones de la Wiki. La codificación utilizada en la compilación es la determinada por el parámetro javac.encoding del fichero build.properties que por defecto está puesto a UTF-8.

He probado multitud de combinaciones cambiando la codificación de la clase java que he modificado, así como el parámetro javac.encoding, pero me sigue sin funcionar.

El servidor de producción está en una máquina linux, cuyo charset por defecto es UTF-8. Y lo más importante, utilizo la versión 2.1 Community.

¿Alguien ha tenido que compilar alguna vez el cliente web?

Por cierto, con respecto al primer problema, he estado viendo que en las versiones 3.3 y 3.4 la clase SearchContext sigue estando igual. De hecho, he probado la versión 3.3 para ver si se resolvía el problema sin resultado satisfactorio.

Saludos

Outcomes