AnsweredAssumed Answered

Modificar clase de Alfresco

Question asked by ajv on May 11, 2008
Hola a todos,

Me encuentro con la siguiente situación: Resulta que la clase del Repositorio de alfresco I18NMessageMethod, que se encarga de devolver mensajes i18n a partir de un id, no permite el paso de parámetros para formatear mensajes.
Es decir, que si en un fichero de propiedades tuviera el siguiente mensaje:
id_mensaje=Hola a todos y a {0}
Por ejemplo, no puedo hacer uso del mensaje anterior para mostrar "Hola a todos y a Adrián":
message(id_mensaje, 'Adrián')
Por tanto, no es posible extraer mensajes con parámetros…

Sin embargo, he revisado el código fuente "reciente" de alfresco y sí que tienen en cuenta los parámetros:
Versión 2.1
public Object exec(List args) throws TemplateModelException
    {
        String result = "";
       
        if (args.size() == 1)
        {
            Object arg0 = args.get(0);
            if (arg0 instanceof TemplateScalarModel)
            {
                String id = ((TemplateScalarModel)arg0).getAsString();
                result = I18NUtil.getMessage(id);
            }
        }
       
        return result;
    }

Versión "reciente"
public Object exec(List args) throws TemplateModelException
    {
        String result = "";
        int argSize = args.size();

        if (argSize > 0)
        {
           String id = "";
           Object arg0 = args.get(0);
           if (arg0 instanceof TemplateScalarModel)
           {
               id = ((TemplateScalarModel)arg0).getAsString();
           }

           if (argSize == 1)
           {
              // Shortcut for no additional params
                result = I18NUtil.getMessage(id);
           }
           else
           {
              Object arg;
              Object[] params = new Object[argSize - 1];
              for (int i = 0; i < argSize-1; i++)
              {
                 // Note: need to ignore first passed-in arg
                 arg = args.get(i+1);
                 if (arg instanceof TemplateScalarModel)
                 {
                     params[i] = ((TemplateScalarModel)arg).getAsString();
                 }
                 else
                 {
                    params[i] = new String("");
                 }
              }
              result = I18NUtil.getMessage(id, params);
           }
        }
       
        return result;
    }

Me interesaría saber si hay alguna forma de "reemplazar" esta clase reciente en el jar de alfresco-repository de la versión 2.1. ¿Es posible??
Gracias de antemano!  :D

Outcomes