You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by gp...@apache.org on 2010/04/20 11:49:34 UTC

svn commit: r935848 - in /myfaces/extensions/cdi/trunk/jse-modules/message-module: api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/ impl/src/main/java/org/apache/myfaces/extensions/cdi/message/impl/ impl/src/test/java/org/apache/myfaces...

Author: gpetracek
Date: Tue Apr 20 09:49:34 2010
New Revision: 935848

URL: http://svn.apache.org/viewvc?rev=935848&view=rev
Log:
EXTCDI-21 minor improvements

Modified:
    myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/AbstractMessage.java
    myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/message/impl/DefaultMessageBuilder.java
    myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/HelperTest.java
    myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/SimpleMessageTest.java

Modified: myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/AbstractMessage.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/AbstractMessage.java?rev=935848&r1=935847&r2=935848&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/AbstractMessage.java (original)
+++ myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/AbstractMessage.java Tue Apr 20 09:49:34 2010
@@ -83,6 +83,15 @@ public abstract class AbstractMessage im
     {
         for (Serializable argument : arguments)
         {
+            if(argument == null)
+            {
+                argument = "null";
+            }
+            else if(argument instanceof Localizable && this.getMessageContextConfig() != null)
+            {
+                argument = ((Localizable)argument).toString(this.getMessageContextConfig().use().create());
+            }
+            
             checkArgument(argument);
             if (argument instanceof NamedArgument)
             {

Modified: myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/message/impl/DefaultMessageBuilder.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/message/impl/DefaultMessageBuilder.java?rev=935848&r1=935847&r2=935848&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/message/impl/DefaultMessageBuilder.java (original)
+++ myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/message/impl/DefaultMessageBuilder.java Tue Apr 20 09:49:34 2010
@@ -21,8 +21,11 @@ package org.apache.myfaces.extensions.cd
 import org.apache.myfaces.extensions.cdi.message.api.Message;
 import org.apache.myfaces.extensions.cdi.message.api.MessageContext;
 import org.apache.myfaces.extensions.cdi.message.api.MessageContextAware;
+import org.apache.myfaces.extensions.cdi.message.api.MessageContextConfigAware;
 import org.apache.myfaces.extensions.cdi.message.api.MessageResolver;
 import org.apache.myfaces.extensions.cdi.message.api.MessageInterpolator;
+import org.apache.myfaces.extensions.cdi.message.api.Formatter;
+import org.apache.myfaces.extensions.cdi.message.api.Localizable;
 import org.apache.myfaces.extensions.cdi.message.api.NamedArgument;
 import org.apache.myfaces.extensions.cdi.message.api.payload.MessagePayload;
 import org.apache.myfaces.extensions.cdi.message.api.payload.MessagePayloadKey;
@@ -118,6 +121,12 @@ class DefaultMessageBuilder implements M
         Class<? extends MessagePayload> severity = getMessageSeverity();
 
         Message result = new DefaultMessage(this.messageTemplate, severity);
+
+        if(result instanceof MessageContextConfigAware)
+        {
+            ((MessageContextConfigAware)result).setMessageContextConfig(this.messageContext.config());
+        }
+
         addArguments(result);
         addPayload(result);
 
@@ -218,18 +227,64 @@ class DefaultMessageBuilder implements M
 
     private String checkedResult(String result, Message baseMessage)
     {
-        if (result == null || isKey(baseMessage.getTemplate()))
+        if (result == null || isKey(baseMessage.getTemplate()) || (!result.contains(" ") && result.endsWith(baseMessage.getTemplate())))
         {
             String oldTemplate = extractTemplate(baseMessage.getTemplate()); //minor performance tweak for inline-msg
 
             if (result == null || result.equals(oldTemplate))
             {
-                return MessageResolver.MISSING_RESOURCE_MARKER + oldTemplate + MessageResolver.MISSING_RESOURCE_MARKER;
+                return MessageResolver.MISSING_RESOURCE_MARKER + oldTemplate + MessageResolver.MISSING_RESOURCE_MARKER + getArguments(baseMessage);
             }
         }
         return result;
     }
 
+    private String getArguments(Message message)
+    {
+        StringBuffer result = new StringBuffer();
+
+        Serializable argument;
+        Serializable[] arguments = message.getArguments();
+        Formatter formatter;
+
+        if(arguments == null || arguments.length == 0)
+        {
+            return "";
+        }
+
+        for(int i = 0; i < arguments.length; i++)
+        {
+            if(i == 0)
+            {
+                result.append(" (");
+            }
+            else
+            {
+                result.append(",");
+            }
+
+            argument = arguments[i];
+            formatter = this.messageContext.config().getFormatterFactory().findFormatter(argument.getClass());
+
+            if (formatter != null)
+            {
+                //noinspection unchecked
+                result.append(formatter.format(this.messageContext, argument));
+            }
+            else if(argument instanceof Localizable)
+            {
+                result.append(((Localizable)argument).toString(this.messageContext));
+            }
+            else
+            {
+                result.append(argument.toString());
+            }
+        }
+        result.append(')');
+
+        return result.toString();
+    }
+
     private String extractTemplate(String template)
     {
         String result = getEscapedTemplate(template);

Modified: myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/HelperTest.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/HelperTest.java?rev=935848&r1=935847&r2=935848&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/HelperTest.java (original)
+++ myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/HelperTest.java Tue Apr 20 09:49:34 2010
@@ -19,6 +19,7 @@
 package org.apache.myfaces.extensions.cdi.message.test;
 
 import org.apache.myfaces.extensions.cdi.message.api.Message;
+import org.apache.myfaces.extensions.cdi.message.api.MessageContextConfigAware;
 import org.apache.myfaces.extensions.cdi.message.impl.DefaultMessage;
 import org.apache.myfaces.extensions.cdi.message.impl.ELAwareMessageInterpolator;
 import org.apache.myfaces.extensions.cdi.message.impl.NamedArguments;
@@ -48,6 +49,7 @@ public class HelperTest extends Abstract
                 .namedArgument("arg1", arg1).namedArgument("arg2", arg2).create();
 
         Message message2 = new DefaultMessage(text, NamedArguments.add("arg1", arg1).add("arg2", arg2).create());
+        ((MessageContextConfigAware)message2).setMessageContextConfig(this.messageContext.config());
 
         assertEquals(message1, message2);
         assertEquals(message1.toString(), message2.toString());
@@ -69,6 +71,7 @@ public class HelperTest extends Abstract
         arguments.put("arg1", arg1);
         arguments.put("arg2", arg2);
         Message message2 = new DefaultMessage(text, NamedArguments.convert(arguments));
+        ((MessageContextConfigAware)message2).setMessageContextConfig(this.messageContext.config());
 
         assertEquals(message1, message2);
         assertEquals(message1.toString(), message2.toString());

Modified: myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/SimpleMessageTest.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/SimpleMessageTest.java?rev=935848&r1=935847&r2=935848&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/SimpleMessageTest.java (original)
+++ myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/SimpleMessageTest.java Tue Apr 20 09:49:34 2010
@@ -104,6 +104,14 @@ public class SimpleMessageTest extends A
     }
 
     @Test
+   public void createInvalidMessageWithArgumentsTest()
+   {
+       String messageText = this.messageContext.message().text("{xyz123}").argument("123").argument("456").argument("789").toText();
+
+       assertEquals("???xyz123??? (123,456,789)", messageText);
+   }
+    
+    @Test
     public void resolveTextTest()
     {
         String messageText = this.messageContext.message().text("{hello}").toText();