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/07/07 12:29:53 UTC

svn commit: r961341 - in /myfaces/extensions/cdi/trunk: examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/java/org/apache/myfaces/blank/message/advanced/ examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/java/org/apache/myfaces/blank/messag...

Author: gpetracek
Date: Wed Jul  7 10:29:52 2010
New Revision: 961341

URL: http://svn.apache.org/viewvc?rev=961341&view=rev
Log:
EXTCDI-21 refactorings (payload,...)

Added:
    myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/payload/AbstractMessagePayload.java
Modified:
    myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/java/org/apache/myfaces/blank/message/advanced/HelloAdvancedMessageBean.java
    myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/java/org/apache/myfaces/blank/message/client/ClientAwareMessageResolverProducer.java
    myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/java/org/apache/myfaces/blank/message/simple/HelloMessageBean.java
    myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/message/JsfAwareApplicationMessagesMessageResolver.java
    myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/message/JsfAwareMessageHandler.java
    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/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/AbstractMessageWithSeverity.java
    myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/Formatter.java
    myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/Message.java
    myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/MessageBuilder.java
    myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/MessageFactory.java
    myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/MessageResolver.java
    myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/MessageWithSeverity.java
    myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/payload/ArgumentDescriptor.java
    myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/payload/InternalMessage.java
    myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/payload/MessagePayload.java
    myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/payload/MessageSeverity.java
    myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/message/impl/DefaultCompositeMessageHandler.java
    myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/message/impl/DefaultFormatterFactory.java
    myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/message/impl/DefaultInternalMessage.java
    myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/message/impl/DefaultMessage.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/main/java/org/apache/myfaces/extensions/cdi/message/impl/DefaultMessageFactory.java
    myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/message/impl/formatter/DefaultNumberFormatter.java
    myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/message/impl/formatter/ToStringFormatter.java
    myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/ExtensibilityTest.java
    myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/Label.java
    myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/MessageSeverityTest.java
    myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/PayloadTest.java
    myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/TechnicalMessage.java
    myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/TestFormatter.java
    myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/TestInternalMessageAwareMessageHandler.java
    myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/TestMessage.java
    myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/TestMessageBuilder.java
    myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/TestMessageFactory.java
    myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/TestMessageResolver.java
    myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/TestPayloadAwareMessageResolver.java

Modified: myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/java/org/apache/myfaces/blank/message/advanced/HelloAdvancedMessageBean.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/java/org/apache/myfaces/blank/message/advanced/HelloAdvancedMessageBean.java?rev=961341&r1=961340&r2=961341&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/java/org/apache/myfaces/blank/message/advanced/HelloAdvancedMessageBean.java (original)
+++ myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/java/org/apache/myfaces/blank/message/advanced/HelloAdvancedMessageBean.java Wed Jul  7 10:29:52 2010
@@ -44,7 +44,7 @@ public class HelloAdvancedMessageBean
         this.messageContext.message()
                 .text("Hello {bean.text}!")
                 .namedArgument("bean", this.testBean)
-                .payload(MessageSeverity.Warn.class)
+                .payload(MessageSeverity.WARN)
                 .add();
     }
 }
\ No newline at end of file

Modified: myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/java/org/apache/myfaces/blank/message/client/ClientAwareMessageResolverProducer.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/java/org/apache/myfaces/blank/message/client/ClientAwareMessageResolverProducer.java?rev=961341&r1=961340&r2=961341&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/java/org/apache/myfaces/blank/message/client/ClientAwareMessageResolverProducer.java (original)
+++ myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/java/org/apache/myfaces/blank/message/client/ClientAwareMessageResolverProducer.java Wed Jul  7 10:29:52 2010
@@ -51,9 +51,11 @@ public class ClientAwareMessageResolverP
     {
         return new MessageResolver()
         {
+            private static final long serialVersionUID = -4009930342736825281L;
+
             public String getMessage(MessageContext messageContext,
                                      String messageDescriptor,
-                                     Map<Class, Class<? extends MessagePayload>> messagePayload)
+                                     Map<Class, MessagePayload> messagePayload)
             {
                 FacesContext facesContext = FacesContext.getCurrentInstance();
 

Modified: myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/java/org/apache/myfaces/blank/message/simple/HelloMessageBean.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/java/org/apache/myfaces/blank/message/simple/HelloMessageBean.java?rev=961341&r1=961340&r2=961341&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/java/org/apache/myfaces/blank/message/simple/HelloMessageBean.java (original)
+++ myfaces/extensions/cdi/trunk/examples/jsf-examples/hello_myfaces-codi_jsf12/src/main/java/org/apache/myfaces/blank/message/simple/HelloMessageBean.java Wed Jul  7 10:29:52 2010
@@ -40,6 +40,6 @@ public class HelloMessageBean
     {
         this.messageContext.message().text("Hello MyFaces CODI").add();
         this.messageContext.message().text("{hello}").argument("MyFaces CODI").add();
-        this.messageContext.message().text("A demo warn message").payload(MessageSeverity.Warn.class).add();
+        this.messageContext.message().text("A demo warn message").payload(MessageSeverity.WARN).add();
     }
 }

Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/message/JsfAwareApplicationMessagesMessageResolver.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/message/JsfAwareApplicationMessagesMessageResolver.java?rev=961341&r1=961340&r2=961341&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/message/JsfAwareApplicationMessagesMessageResolver.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/message/JsfAwareApplicationMessagesMessageResolver.java Wed Jul  7 10:29:52 2010
@@ -36,7 +36,7 @@ class JsfAwareApplicationMessagesMessage
 
     public String getMessage(MessageContext messageContext,
                              String messageDescriptor,
-                             Map<Class, Class<? extends MessagePayload>> messagePayload)
+                             Map<Class, MessagePayload> messagePayload)
     {
         if (!isKey(messageDescriptor))
         {

Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/message/JsfAwareMessageHandler.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/message/JsfAwareMessageHandler.java?rev=961341&r1=961340&r2=961341&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/message/JsfAwareMessageHandler.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/javaee/jsf/impl/message/JsfAwareMessageHandler.java Wed Jul  7 10:29:52 2010
@@ -34,10 +34,12 @@ import java.util.List;
  */
 class JsfAwareMessageHandler extends AbstractMessageHandler
 {
+    private static final long serialVersionUID = -7193428173462936712L;
+
     @Override
     protected void processMessage(MessageContext messageContext, Message message)
     {
-        Class<? extends MessagePayload> severity = MessageSeverity.Info.class;
+        MessagePayload severity = MessageSeverity.INFO;
 
         if (message instanceof MessageWithSeverity)
         {
@@ -50,25 +52,25 @@ class JsfAwareMessageHandler extends Abs
                         message.toString(messageContext)));
     }
 
-    private FacesMessage.Severity convertSeverity(Class<? extends MessagePayload> payload)
+    private FacesMessage.Severity convertSeverity(MessagePayload payload)
     {
-        if (MessageSeverity.Info.class.isAssignableFrom(payload))
+        if (MessageSeverity.INFO.equals(payload))
         {
             return FacesMessage.SEVERITY_INFO;
         }
-        if (MessageSeverity.Warn.class.isAssignableFrom(payload))
+        if (MessageSeverity.WARN.equals(payload))
         {
             return FacesMessage.SEVERITY_WARN;
         }
-        if (MessageSeverity.Error.class.isAssignableFrom(payload))
+        if (MessageSeverity.ERROR.equals(payload))
         {
             return FacesMessage.SEVERITY_ERROR;
         }
-        if (MessageSeverity.Fatal.class.isAssignableFrom(payload))
+        if (MessageSeverity.FATAL.equals(payload))
         {
             return FacesMessage.SEVERITY_FATAL;
         }
-        throw new IllegalArgumentException(payload.getName());
+        throw new IllegalArgumentException(payload.getClass().getName());
     }
 
     public void removeMessage(Message message)

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=961341&r1=961340&r2=961341&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 Wed Jul  7 10:29:52 2010
@@ -38,8 +38,7 @@ public abstract class AbstractMessage im
     protected String messageDescriptor;
     protected Set<NamedArgument> namedArguments = new HashSet<NamedArgument>();
     protected List<Serializable> arguments = new ArrayList<Serializable>();
-    protected Map<Class, Class<? extends MessagePayload>> messagePayload =
-            new HashMap<Class, Class<? extends MessagePayload>>();
+    protected Map<Class, MessagePayload> messagePayload = new HashMap<Class, MessagePayload>();
 
     //optional
     @Deprecated
@@ -58,11 +57,11 @@ public abstract class AbstractMessage im
 
         for (Serializable argument : arguments)
         {
-            if (argument instanceof Class && MessagePayload.class.isAssignableFrom((Class) argument))
+            if (argument instanceof MessagePayload)
             {
                 //TODO log warning
                 //noinspection unchecked
-                addPayload((Class) argument);
+                addPayload((MessagePayload) argument);
             }
             else
             {
@@ -224,23 +223,23 @@ public abstract class AbstractMessage im
         return mergedArguments.toArray(new Serializable[mergedArguments.size()]);
     }
 
-    public void addPayload(Class<? extends MessagePayload> payload)
+    public void addPayload(MessagePayload payload)
     {
-        Class key = payload;
+        Class key = payload.getClass();
 
-        if (payload.isAnnotationPresent(MessagePayloadKey.class))
+        if (payload.getClass().isAnnotationPresent(MessagePayloadKey.class))
         {
-            key = payload.getAnnotation(MessagePayloadKey.class).value();
+            key = payload.getClass().getAnnotation(MessagePayloadKey.class).value();
         }
         addPayload(key, payload);
     }
 
-    public Map<Class, Class<? extends MessagePayload>> getPayload()
+    public Map<Class, MessagePayload> getPayload()
     {
         return Collections.unmodifiableMap(this.messagePayload);
     }
 
-    public void addPayload(Class key, Class<? extends MessagePayload> payload)
+    public void addPayload(Class key, MessagePayload payload)
     {
         if (this.messagePayload.containsKey(key))
         {

Modified: myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/AbstractMessageWithSeverity.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/AbstractMessageWithSeverity.java?rev=961341&r1=961340&r2=961341&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/AbstractMessageWithSeverity.java (original)
+++ myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/AbstractMessageWithSeverity.java Wed Jul  7 10:29:52 2010
@@ -35,7 +35,7 @@ public abstract class AbstractMessageWit
     }
 
     public AbstractMessageWithSeverity(String messageDescriptor,
-                                       Class<? extends MessagePayload> severity,
+                                       MessagePayload severity,
                                        Serializable... arguments)
     {
         super(messageDescriptor, arguments);
@@ -43,15 +43,15 @@ public abstract class AbstractMessageWit
     }
 
     public AbstractMessageWithSeverity(String messageDescriptor,
-                                       Class<? extends MessagePayload> severity,
+                                       MessagePayload severity,
                                        Set<NamedArgument> namedArguments)
     {
         super(messageDescriptor, namedArguments);
         addPayload(severity);
     }
 
-    public Class<? extends MessagePayload> getSeverity()
+    public MessagePayload getSeverity()
     {
         return getPayload().get(MessageSeverity.class);
     }
-}
\ No newline at end of file
+}

Modified: myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/Formatter.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/Formatter.java?rev=961341&r1=961340&r2=961341&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/Formatter.java (original)
+++ myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/Formatter.java Wed Jul  7 10:29:52 2010
@@ -37,6 +37,11 @@ public interface Formatter<T> extends Se
     boolean isResponsibleFor(Class<?> type);
 
     /**
+     * @return true if it is allowed to cache the instance of the formatter
+     */
+    boolean isStateless();
+
+    /**
      * formats the given instance as string
      *
      * @param messageContext current message context

Modified: myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/Message.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/Message.java?rev=961341&r1=961340&r2=961341&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/Message.java (original)
+++ myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/Message.java Wed Jul  7 10:29:52 2010
@@ -47,11 +47,11 @@ public interface Message extends Localiz
     /**
      * @return the payload of the message
      */
-    Map<Class, Class<? extends MessagePayload>> getPayload();
+    Map<Class, MessagePayload> getPayload();
 
     /**
      * @param key of the payload
      * @param payload value of the payload
      */
-    void addPayload(Class key, Class<? extends MessagePayload> payload);
+    void addPayload(Class key, MessagePayload payload);
 }

Modified: myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/MessageBuilder.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/MessageBuilder.java?rev=961341&r1=961340&r2=961341&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/MessageBuilder.java (original)
+++ myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/MessageBuilder.java Wed Jul  7 10:29:52 2010
@@ -31,7 +31,7 @@ public interface MessageBuilder extends 
      * @param messagePayload payload for the current message
      * @return the current instance of the message builder to allow a fluent api
      */
-    MessageBuilder payload(Class<? extends MessagePayload>... messagePayload);
+    MessageBuilder payload(MessagePayload... messagePayload);
 
     /**
      * @param messageDescriptor message key (or inline-text) for the current message

Modified: myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/MessageFactory.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/MessageFactory.java?rev=961341&r1=961340&r2=961341&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/MessageFactory.java (original)
+++ myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/MessageFactory.java Wed Jul  7 10:29:52 2010
@@ -38,5 +38,5 @@ public interface MessageFactory extends 
      * @param messagePayload the initial payload of the message
      * @return a new message instance
      */
-    Message create(String messageDescriptor,  Class<? extends MessagePayload> messagePayload);
+    Message create(String messageDescriptor,  MessagePayload messagePayload);
 }

Modified: myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/MessageResolver.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/MessageResolver.java?rev=961341&r1=961340&r2=961341&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/MessageResolver.java (original)
+++ myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/MessageResolver.java Wed Jul  7 10:29:52 2010
@@ -38,5 +38,5 @@ public interface MessageResolver extends
      */
     String getMessage(MessageContext messageContext,
                       String messageDescriptor,
-                      Map<Class, Class<? extends MessagePayload>> payload);
+                      Map<Class, MessagePayload> payload);
 }

Modified: myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/MessageWithSeverity.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/MessageWithSeverity.java?rev=961341&r1=961340&r2=961341&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/MessageWithSeverity.java (original)
+++ myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/MessageWithSeverity.java Wed Jul  7 10:29:52 2010
@@ -30,5 +30,5 @@ public interface MessageWithSeverity ext
     /**
      * @return the severity of the message based on the message payload
      */
-    Class<? extends MessagePayload> getSeverity();
+    MessagePayload getSeverity();
 }

Added: myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/payload/AbstractMessagePayload.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/payload/AbstractMessagePayload.java?rev=961341&view=auto
==============================================================================
--- myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/payload/AbstractMessagePayload.java (added)
+++ myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/payload/AbstractMessagePayload.java Wed Jul  7 10:29:52 2010
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.extensions.cdi.message.api.payload;
+
+/**
+ * @author Gerhard Petracek
+ */
+public abstract class AbstractMessagePayload implements MessagePayload
+{
+    @Override
+    public int hashCode()
+    {
+        return getClass().hashCode();
+    }
+
+    @Override
+    public boolean equals(Object target)
+    {
+        return getClass().equals(target.getClass());
+    }
+}

Modified: myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/payload/ArgumentDescriptor.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/payload/ArgumentDescriptor.java?rev=961341&r1=961340&r2=961341&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/payload/ArgumentDescriptor.java (original)
+++ myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/payload/ArgumentDescriptor.java Wed Jul  7 10:29:52 2010
@@ -44,6 +44,13 @@ package org.apache.myfaces.extensions.cd
  *
  * @author Gerhard Petracek
  */
-public interface ArgumentDescriptor extends MessagePayload
+public final class ArgumentDescriptor extends AbstractMessagePayload
 {
+    private static final long serialVersionUID = -8923485139364779354L;
+
+    public static final ArgumentDescriptor PAYLOAD = new ArgumentDescriptor();
+
+    private ArgumentDescriptor()
+    {
+    }
 }

Modified: myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/payload/InternalMessage.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/payload/InternalMessage.java?rev=961341&r1=961340&r2=961341&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/payload/InternalMessage.java (original)
+++ myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/payload/InternalMessage.java Wed Jul  7 10:29:52 2010
@@ -23,6 +23,13 @@ package org.apache.myfaces.extensions.cd
  *
  * @author Gerhard Petracek
  */
-public interface InternalMessage extends MessagePayload
+public class InternalMessage extends AbstractMessagePayload
 {
+    private static final long serialVersionUID = -1336393216007593320L;
+
+    public static final InternalMessage PAYLOAD = new InternalMessage();
+    
+    private InternalMessage()
+    {
+    }
 }
\ No newline at end of file

Modified: myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/payload/MessagePayload.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/payload/MessagePayload.java?rev=961341&r1=961340&r2=961341&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/payload/MessagePayload.java (original)
+++ myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/payload/MessagePayload.java Wed Jul  7 10:29:52 2010
@@ -18,11 +18,13 @@
  */
 package org.apache.myfaces.extensions.cdi.message.api.payload;
 
+import java.io.Serializable;
+
 /**
  * hint: enums,... have major issues with serialization (to different machines) and aren't extensible
  *
  * @author Gerhard Petracek
  */
-public interface MessagePayload
+public interface MessagePayload extends Serializable
 {
 }

Modified: myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/payload/MessageSeverity.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/payload/MessageSeverity.java?rev=961341&r1=961340&r2=961341&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/payload/MessageSeverity.java (original)
+++ myfaces/extensions/cdi/trunk/jse-modules/message-module/api/src/main/java/org/apache/myfaces/extensions/cdi/message/api/payload/MessageSeverity.java Wed Jul  7 10:29:52 2010
@@ -23,23 +23,48 @@ package org.apache.myfaces.extensions.cd
  */
 public interface MessageSeverity
 {
+    public static final Info INFO = new Info();
+    public static final Warn WARN = new Warn();
+    public static final Error ERROR = new Error();
+    public static final Fatal FATAL = new Fatal();
+
     @MessagePayloadKey(MessageSeverity.class)
-    public final class Info implements MessagePayload
+    public final class Info  extends AbstractMessagePayload
     {
+        private static final long serialVersionUID = -8366105004121496310L;
+
+        private Info()
+        {
+        }
     }
 
     @MessagePayloadKey(MessageSeverity.class)
-    public final class Warn implements MessagePayload
+    public final class Warn extends AbstractMessagePayload
     {
+        private static final long serialVersionUID = -8656172186651851576L;
+
+        private Warn()
+        {
+        }
     }
 
     @MessagePayloadKey(MessageSeverity.class)
-    public final class Error implements MessagePayload
+    public final class Error extends AbstractMessagePayload
     {
+        private static final long serialVersionUID = -1825994085836261242L;
+
+        private Error()
+        {
+        }
     }
 
     @MessagePayloadKey(MessageSeverity.class)
-    public final class Fatal implements MessagePayload
+    public final class Fatal extends AbstractMessagePayload
     {
+        private static final long serialVersionUID = 1323372922553756526L;
+
+        private Fatal()
+        {
+        }
     }
 }

Modified: myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/message/impl/DefaultCompositeMessageHandler.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/DefaultCompositeMessageHandler.java?rev=961341&r1=961340&r2=961341&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/message/impl/DefaultCompositeMessageHandler.java (original)
+++ myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/message/impl/DefaultCompositeMessageHandler.java Wed Jul  7 10:29:52 2010
@@ -38,7 +38,7 @@ class DefaultCompositeMessageHandler imp
 {
     private static final long serialVersionUID = 3553885372006874180L;
 
-    private List<MessageHandler> messageHandlers = new ArrayList<MessageHandler>();
+    private final List<MessageHandler> messageHandlers = new ArrayList<MessageHandler>();
 
     DefaultCompositeMessageHandler(Iterable<MessageHandler> messageHandlerIterable)
     {
@@ -48,7 +48,6 @@ class DefaultCompositeMessageHandler imp
         }
     }
 
-
     public void addMessage(MessageContext messageContext, Message message)
     {
         for (MessageHandler messageHandler : this.messageHandlers)

Modified: myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/message/impl/DefaultFormatterFactory.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/DefaultFormatterFactory.java?rev=961341&r1=961340&r2=961341&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/message/impl/DefaultFormatterFactory.java (original)
+++ myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/message/impl/DefaultFormatterFactory.java Wed Jul  7 10:29:52 2010
@@ -54,7 +54,10 @@ public class DefaultFormatterFactory imp
         if(!this.formatters.contains(formatter))
         {
             this.formatters.add(formatter);
-            formatterCache = null;
+            if(this.formatterCache != null)
+            {
+                this.formatterCache.clear();
+            }
         }
         return this;
     }
@@ -88,7 +91,10 @@ public class DefaultFormatterFactory imp
                 found = FormatterBuilder.createFormatter(type);
             }
 
-            this.formatterCache.put(type, found);
+            if(found.isStateless())
+            {
+                this.formatterCache.put(type, found);
+            }
             return found;
         }
     }

Modified: myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/message/impl/DefaultInternalMessage.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/DefaultInternalMessage.java?rev=961341&r1=961340&r2=961341&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/message/impl/DefaultInternalMessage.java (original)
+++ myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/message/impl/DefaultInternalMessage.java Wed Jul  7 10:29:52 2010
@@ -35,29 +35,29 @@ public class DefaultInternalMessage exte
 
     public DefaultInternalMessage(String messageDescriptor, Serializable... arguments)
     {
-        super(messageDescriptor, MessageSeverity.Info.class, arguments);
-        addPayload(InternalMessage.class);
+        super(messageDescriptor, MessageSeverity.INFO, arguments);
+        addPayload(InternalMessage.PAYLOAD);
     }
 
     public DefaultInternalMessage(String messageDescriptor, Set<NamedArgument> namedArguments)
     {
-        super(messageDescriptor, MessageSeverity.Info.class, namedArguments);
-        addPayload(InternalMessage.class);
+        super(messageDescriptor, MessageSeverity.INFO, namedArguments);
+        addPayload(InternalMessage.PAYLOAD);
     }
 
     public DefaultInternalMessage(String messageDescriptor,
-                                  Class<? extends MessagePayload> severity,
+                                  MessagePayload severity,
                                   Serializable... arguments)
     {
         super(messageDescriptor, severity, arguments);
-        addPayload(InternalMessage.class);
+        addPayload(InternalMessage.PAYLOAD);
     }
 
     public DefaultInternalMessage(String messageDescriptor,
-                                  Class<? extends MessagePayload> severity,
+                                  MessagePayload severity,
                                   Set<NamedArgument> namedArguments)
     {
         super(messageDescriptor, severity, namedArguments);
-        addPayload(InternalMessage.class);
+        addPayload(InternalMessage.PAYLOAD);
     }
 }
\ No newline at end of file

Modified: myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/message/impl/DefaultMessage.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/DefaultMessage.java?rev=961341&r1=961340&r2=961341&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/message/impl/DefaultMessage.java (original)
+++ myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/message/impl/DefaultMessage.java Wed Jul  7 10:29:52 2010
@@ -42,23 +42,23 @@ public class DefaultMessage extends Abst
 
     public DefaultMessage(String messageDescriptor, Serializable... arguments)
     {
-        super(messageDescriptor, MessageSeverity.Info.class, arguments);
+        super(messageDescriptor, MessageSeverity.INFO, arguments);
     }
 
     public DefaultMessage(String messageDescriptor, Set<NamedArgument> namedArguments)
     {
-        super(messageDescriptor, MessageSeverity.Info.class, namedArguments);
+        super(messageDescriptor, MessageSeverity.INFO, namedArguments);
     }
 
     public DefaultMessage(String messageDescriptor,
-                          Class<? extends MessagePayload> severity,
+                          MessagePayload severity,
                           Serializable... arguments)
     {
         super(messageDescriptor, severity, arguments);
     }
 
     public DefaultMessage(String messageDescriptor,
-                          Class<? extends MessagePayload> severity,
+                          MessagePayload severity,
                           Set<NamedArgument> namedArguments)
     {
         super(messageDescriptor, severity, namedArguments);
@@ -83,12 +83,12 @@ public class DefaultMessage extends Abst
                 .toText();
     }
 
-    private Class<? extends MessagePayload>[] getMessagePayload()
+    private MessagePayload[] getMessagePayload()
     {
-        Class[] result = new Class[getPayload().size()];
+        MessagePayload[] result = new MessagePayload[getPayload().size()];
 
         int i = 0;
-        for(Class<? extends MessagePayload> payload : getPayload().values())
+        for(MessagePayload payload : getPayload().values())
         {
             result[i] = payload;
             i++;

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=961341&r1=961340&r2=961341&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 Wed Jul  7 10:29:52 2010
@@ -53,7 +53,7 @@ class DefaultMessageBuilder implements M
 
     private Set<NamedArgument> namedArguments;
     private MessageContext messageContext;
-    private Map<Class, Class<? extends MessagePayload>> messagePayload;
+    private Map<Class, MessagePayload> messagePayload;
     private String messageDescriptor;
 
     private MessageFactory messageFactory;
@@ -77,16 +77,16 @@ class DefaultMessageBuilder implements M
         }
     }
 
-    public MessageBuilder payload(Class<? extends MessagePayload>... messagePayload)
+    public MessageBuilder payload(MessagePayload... messagePayload)
     {
         Class key;
 
-        for (Class<? extends MessagePayload> payload : messagePayload)
+        for (MessagePayload payload : messagePayload)
         {
-            key = payload;
-            if (payload.isAnnotationPresent(MessagePayloadKey.class))
+            key = payload.getClass();
+            if (payload.getClass().isAnnotationPresent(MessagePayloadKey.class))
             {
-                key = payload.getAnnotation(MessagePayloadKey.class).value();
+                key = payload.getClass().getAnnotation(MessagePayloadKey.class).value();
             }
             this.messagePayload.put(key, payload);
         }
@@ -158,13 +158,13 @@ class DefaultMessageBuilder implements M
         return new DefaultMessage(this.messageDescriptor, getMessageSeverity());
     }
 
-    private Class<? extends MessagePayload> getMessageSeverity()
+    private MessagePayload getMessageSeverity()
     {
-        Class<? extends MessagePayload> severity = this.messagePayload.get(MessageSeverity.class);
+        MessagePayload severity = this.messagePayload.get(MessageSeverity.class);
 
         if (severity == null)
         {
-            severity = MessageSeverity.Info.class;
+            severity = MessageSeverity.INFO;
         }
         return severity;
     }
@@ -184,7 +184,7 @@ class DefaultMessageBuilder implements M
 
     private void addPayload(Message result)
     {
-        for (Map.Entry<Class, Class<? extends MessagePayload>> entry : this.messagePayload.entrySet())
+        for (Map.Entry<Class, MessagePayload> entry : this.messagePayload.entrySet())
         {
             if (!MessageSeverity.class.equals(entry.getKey()))
             {
@@ -196,7 +196,7 @@ class DefaultMessageBuilder implements M
     protected void reset()
     {
         this.messageDescriptor = null;
-        this.messagePayload = new HashMap<Class, Class<? extends MessagePayload>>();
+        this.messagePayload = new HashMap<Class, MessagePayload>();
         this.argumentList = new ArrayList<Serializable>();
         this.namedArguments = new HashSet<NamedArgument>();
     }
@@ -374,7 +374,7 @@ class DefaultMessageBuilder implements M
     {
         return messageContext.message()
                 .text(argumentAsKey)
-                .payload(ArgumentDescriptor.class)
+                .payload(ArgumentDescriptor.PAYLOAD)
                 .toText();
     }
 

Modified: myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/message/impl/DefaultMessageFactory.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/DefaultMessageFactory.java?rev=961341&r1=961340&r2=961341&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/message/impl/DefaultMessageFactory.java (original)
+++ myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/message/impl/DefaultMessageFactory.java Wed Jul  7 10:29:52 2010
@@ -29,7 +29,7 @@ class DefaultMessageFactory implements M
 {
     private static final long serialVersionUID = 721557343207858857L;
 
-    public Message create(String messageDescriptor, Class<? extends MessagePayload> messagePayload)
+    public Message create(String messageDescriptor, MessagePayload messagePayload)
     {
         return new DefaultMessage(messageDescriptor, messagePayload);
     }

Modified: myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/message/impl/formatter/DefaultNumberFormatter.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/formatter/DefaultNumberFormatter.java?rev=961341&r1=961340&r2=961341&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/message/impl/formatter/DefaultNumberFormatter.java (original)
+++ myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/message/impl/formatter/DefaultNumberFormatter.java Wed Jul  7 10:29:52 2010
@@ -50,6 +50,11 @@ class DefaultNumberFormatter implements 
         return Number.class.isAssignableFrom(type);
     }
 
+    public boolean isStateless()
+    {
+        return false;
+    }
+
     public String format(MessageContext messageContext, Number valueToFormat)
     {
         GenericConfig formatterConfig = messageContext.config().getFormatterFactory()
@@ -151,4 +156,52 @@ class DefaultNumberFormatter implements 
         }
         return format;
     }
+
+    @Override
+    public boolean equals(Object o)
+    {
+        if (this == o)
+        {
+            return true;
+        }
+        if (!(o instanceof DefaultNumberFormatter))
+        {
+            return false;
+        }
+
+        DefaultNumberFormatter that = (DefaultNumberFormatter) o;
+
+        if (decimalSeparator != null ? !decimalSeparator.equals(that.decimalSeparator) : that.decimalSeparator
+                != null)
+        {
+            return false;
+        }
+        if (groupingSeparator != null ? !groupingSeparator.equals(that.groupingSeparator) : that.groupingSeparator
+                != null)
+        {
+            return false;
+        }
+        if (minimumFractionDigits != null ?
+                !minimumFractionDigits.equals(that.minimumFractionDigits) : that.minimumFractionDigits != null)
+        {
+            return false;
+        }
+        if (minimumIntegerDigits != null ?
+                !minimumIntegerDigits.equals(that.minimumIntegerDigits) : that.minimumIntegerDigits != null)
+        {
+            return false;
+        }
+
+        return true;
+    }
+
+    @Override
+    public int hashCode()
+    {
+        int result = groupingSeparator != null ? groupingSeparator.hashCode() : 0;
+        result = 31 * result + (decimalSeparator != null ? decimalSeparator.hashCode() : 0);
+        result = 31 * result + (minimumFractionDigits != null ? minimumFractionDigits.hashCode() : 0);
+        result = 31 * result + (minimumIntegerDigits != null ? minimumIntegerDigits.hashCode() : 0);
+        return result;
+    }
 }

Modified: myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/message/impl/formatter/ToStringFormatter.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/formatter/ToStringFormatter.java?rev=961341&r1=961340&r2=961341&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/message/impl/formatter/ToStringFormatter.java (original)
+++ myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/message/impl/formatter/ToStringFormatter.java Wed Jul  7 10:29:52 2010
@@ -45,6 +45,11 @@ class ToStringFormatter implements Forma
         return type.isAssignableFrom(this.responsibleFor);
     }
 
+    public boolean isStateless()
+    {
+        return true;
+    }
+
     public String format(MessageContext messageContext, Object valueToFormat)
     {
         if(valueToFormat instanceof Localizable)
@@ -53,4 +58,16 @@ class ToStringFormatter implements Forma
         }
         return valueToFormat != null ? valueToFormat.toString() : "";
     }
+
+    @Override
+    public int hashCode()
+    {
+        return getClass().getName().hashCode();
+    }
+
+    @Override
+    public boolean equals(Object target)
+    {
+        return target instanceof ToStringFormatter;
+    }
 }

Modified: myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/ExtensibilityTest.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/ExtensibilityTest.java?rev=961341&r1=961340&r2=961341&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/ExtensibilityTest.java (original)
+++ myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/ExtensibilityTest.java Wed Jul  7 10:29:52 2010
@@ -63,7 +63,7 @@ public class ExtensibilityTest extends A
     @Test
     public void customMessageTypeTest()
     {
-        String messageText = this.messageContext.message().text("{hello}").payload(Label.class).toText();
+        String messageText = this.messageContext.message().text("{hello}").payload(Label.PAYLOAD).toText();
 
         assertEquals("test label", messageText);
     }
@@ -138,4 +138,4 @@ public class ExtensibilityTest extends A
 
         assertTrue(messageContext.typed(TestCustomMessageContext.class).isReachable());
     }
-}
\ No newline at end of file
+}

Modified: myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/Label.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/Label.java?rev=961341&r1=961340&r2=961341&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/Label.java (original)
+++ myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/Label.java Wed Jul  7 10:29:52 2010
@@ -18,11 +18,18 @@
  */
 package org.apache.myfaces.extensions.cdi.message.test;
 
-import org.apache.myfaces.extensions.cdi.message.api.payload.MessagePayload;
+import org.apache.myfaces.extensions.cdi.message.api.payload.AbstractMessagePayload;
 
 /**
  * @author Gerhard Petracek
  */
-interface Label extends MessagePayload
+class Label extends AbstractMessagePayload
 {
+    private static final long serialVersionUID = -6358900342832276274L;
+
+    static final Label PAYLOAD = new Label();
+    
+    private Label()
+    {
+    }
 }

Modified: myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/MessageSeverityTest.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/MessageSeverityTest.java?rev=961341&r1=961340&r2=961341&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/MessageSeverityTest.java (original)
+++ myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/MessageSeverityTest.java Wed Jul  7 10:29:52 2010
@@ -36,22 +36,22 @@ public class MessageSeverityTest extends
 
         assertNotNull(message);
         assertTrue(message.getPayload().containsKey(MessageSeverity.class));
-        assertTrue(message.getPayload().containsValue(MessageSeverity.Info.class));
+        assertTrue(message.getPayload().containsValue(MessageSeverity.INFO));
 
         assertTrue(message instanceof MessageWithSeverity);
-        assertEquals(MessageSeverity.Info.class, ((MessageWithSeverity) message).getSeverity());
+        assertTrue(MessageSeverity.INFO.equals(((MessageWithSeverity) message).getSeverity()));
     }
 
     @Test
     public void createMessageWithSeverityWarnTest()
     {
-        Message message = this.messageContext.message().text("hello open message").payload(MessageSeverity.Warn.class).create();
+        Message message = this.messageContext.message().text("hello open message").payload(MessageSeverity.WARN).create();
 
         assertNotNull(message);
         assertTrue(message.getPayload().containsKey(MessageSeverity.class));
-        assertTrue(message.getPayload().containsValue(MessageSeverity.Warn.class));
+        assertTrue(message.getPayload().containsValue(MessageSeverity.WARN));
 
         assertTrue(message instanceof MessageWithSeverity);
-        assertEquals(MessageSeverity.Warn.class, ((MessageWithSeverity) message).getSeverity());
+        assertTrue(MessageSeverity.WARN.equals(((MessageWithSeverity) message).getSeverity()));
     }
 }
\ No newline at end of file

Modified: myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/PayloadTest.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/PayloadTest.java?rev=961341&r1=961340&r2=961341&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/PayloadTest.java (original)
+++ myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/PayloadTest.java Wed Jul  7 10:29:52 2010
@@ -36,7 +36,7 @@ public class PayloadTest extends Abstrac
         this.messageContext.config().change().addMessageHandler(new TestInternalMessageAwareMessageHandler());
 
         this.messageContext.message().text("test msg 1").add();
-        this.messageContext.message().text("test msg 2").payload(InternalMessage.class).add();
+        this.messageContext.message().text("test msg 2").payload(InternalMessage.PAYLOAD).add();
 
         assertEquals(1, this.messageContext.getMessages().size());
         assertEquals(this.messageContext.message().text("test msg 1").create(),
@@ -66,7 +66,7 @@ public class PayloadTest extends Abstrac
 
         assertFalse(testResolver.isPayloadAvailable());
 
-        this.messageContext.message().text("test msg").payload(MessageSeverity.Warn.class).toText();
+        this.messageContext.message().text("test msg").payload(MessageSeverity.WARN).toText();
 
         assertTrue(testResolver.isPayloadAvailable());
     }
@@ -79,9 +79,9 @@ public class PayloadTest extends Abstrac
 
         assertFalse(testResolver.isPayloadAvailable());
 
-        Message message = this.messageContext.message().text("test msg").payload(MessageSeverity.Warn.class).create();
+        Message message = this.messageContext.message().text("test msg").payload(MessageSeverity.WARN).create();
         message.toString(this.messageContext);
 
         assertTrue(testResolver.isPayloadAvailable());
     }
-}
\ No newline at end of file
+}

Modified: myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/TechnicalMessage.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/TechnicalMessage.java?rev=961341&r1=961340&r2=961341&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/TechnicalMessage.java (original)
+++ myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/TechnicalMessage.java Wed Jul  7 10:29:52 2010
@@ -18,11 +18,18 @@
  */
 package org.apache.myfaces.extensions.cdi.message.test;
 
-import org.apache.myfaces.extensions.cdi.message.api.payload.MessagePayload;
+import org.apache.myfaces.extensions.cdi.message.api.payload.AbstractMessagePayload;
 
 /**
  * @author Gerhard Petracek
  */
-interface TechnicalMessage extends MessagePayload
+class TechnicalMessage extends AbstractMessagePayload
 {
+    private static final long serialVersionUID = 4487372349337877496L;
+
+    static final TechnicalMessage PAYLOAD = new TechnicalMessage();
+
+    private TechnicalMessage()
+    {
+    }
 }
\ No newline at end of file

Modified: myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/TestFormatter.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/TestFormatter.java?rev=961341&r1=961340&r2=961341&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/TestFormatter.java (original)
+++ myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/TestFormatter.java Wed Jul  7 10:29:52 2010
@@ -42,6 +42,11 @@ public class TestFormatter implements Fo
         return type.isAssignableFrom(this.responsibleFor);
     }
 
+    public boolean isStateless()
+    {
+        return true;
+    }
+
     public String format(MessageContext messageContext, Object valueToFormat)
     {
         return valueToFormat != null ? valueToFormat.toString() : "";

Modified: myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/TestInternalMessageAwareMessageHandler.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/TestInternalMessageAwareMessageHandler.java?rev=961341&r1=961340&r2=961341&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/TestInternalMessageAwareMessageHandler.java (original)
+++ myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/TestInternalMessageAwareMessageHandler.java Wed Jul  7 10:29:52 2010
@@ -27,6 +27,8 @@ import org.apache.myfaces.extensions.cdi
  */
 class TestInternalMessageAwareMessageHandler extends TestInMemoryMessageHandler
 {
+    private static final long serialVersionUID = -918869036542859199L;
+
     public void addMessage(MessageContext messageContext, Message message)
     {
         if (!message.getPayload().containsKey(InternalMessage.class))
@@ -34,4 +36,4 @@ class TestInternalMessageAwareMessageHan
             super.addMessage(messageContext, message);
         }
     }
-}
\ No newline at end of file
+}

Modified: myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/TestMessage.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/TestMessage.java?rev=961341&r1=961340&r2=961341&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/TestMessage.java (original)
+++ myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/TestMessage.java Wed Jul  7 10:29:52 2010
@@ -44,12 +44,12 @@ class TestMessage extends DefaultMessage
         super(messageDescriptor, namedArguments);
     }
 
-    public TestMessage(String messageDescriptor, Class<? extends MessagePayload> severity, Object... arguments)
+    public TestMessage(String messageDescriptor, MessagePayload severity, Object... arguments)
     {
         super(messageDescriptor, severity, arguments);
     }
 
-    public TestMessage(String messageDescriptor, Class<? extends MessagePayload> severity, Set<NamedArgument> namedArguments)
+    public TestMessage(String messageDescriptor, MessagePayload severity, Set<NamedArgument> namedArguments)
     {
         super(messageDescriptor, severity, namedArguments);
     }

Modified: myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/TestMessageBuilder.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/TestMessageBuilder.java?rev=961341&r1=961340&r2=961341&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/TestMessageBuilder.java (original)
+++ myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/TestMessageBuilder.java Wed Jul  7 10:29:52 2010
@@ -39,11 +39,11 @@ class TestMessageBuilder extends SimpleM
 
     public static MessageBuilder technicalMessage()
     {
-        return new TestMessageBuilder().payload(TechnicalMessage.class);
+        return new TestMessageBuilder().payload(TechnicalMessage.PAYLOAD);
     }
 
     public static MessageBuilder label()
     {
-        return new TestMessageBuilder().payload(Label.class);
+        return new TestMessageBuilder().payload(Label.PAYLOAD);
     }
 }

Modified: myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/TestMessageFactory.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/TestMessageFactory.java?rev=961341&r1=961340&r2=961341&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/TestMessageFactory.java (original)
+++ myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/TestMessageFactory.java Wed Jul  7 10:29:52 2010
@@ -29,7 +29,7 @@ class TestMessageFactory implements Mess
 {
     private static final long serialVersionUID = -2561554895243475186L;
 
-    public Message create(String messageDescriptor, Class<? extends MessagePayload> messagePayload)
+    public Message create(String messageDescriptor, MessagePayload messagePayload)
     {
         return new TestMessage(messageDescriptor, messagePayload);
     }

Modified: myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/TestMessageResolver.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/TestMessageResolver.java?rev=961341&r1=961340&r2=961341&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/TestMessageResolver.java (original)
+++ myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/TestMessageResolver.java Wed Jul  7 10:29:52 2010
@@ -39,7 +39,7 @@ class TestMessageResolver implements Mes
 
     public String getMessage(MessageContext messageContext,
                              String key,
-                             Map<Class, Class<? extends MessagePayload>> messagePayload)
+                             Map<Class, MessagePayload> messagePayload)
     {
         if (!isKey(key))
         {

Modified: myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/TestPayloadAwareMessageResolver.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/TestPayloadAwareMessageResolver.java?rev=961341&r1=961340&r2=961341&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/TestPayloadAwareMessageResolver.java (original)
+++ myfaces/extensions/cdi/trunk/jse-modules/message-module/impl/src/test/java/org/apache/myfaces/extensions/cdi/message/test/TestPayloadAwareMessageResolver.java Wed Jul  7 10:29:52 2010
@@ -30,13 +30,14 @@ import java.util.Map;
  */
 class TestPayloadAwareMessageResolver implements MessageResolver
 {
-    private boolean isPayloadAvailable = false; 
+    private static final long serialVersionUID = -8103367805263154062L;
+    private boolean isPayloadAvailable = false;
 
     public String getMessage(MessageContext messageContext,
                              String key,
-                             Map<Class, Class<? extends MessagePayload>> payload)
+                             Map<Class, MessagePayload> payload)
     {
-        if(MessageSeverity.Warn.class.equals(payload.get(MessageSeverity.class)))
+        if(MessageSeverity.WARN.equals(payload.get(MessageSeverity.class)))
         {
             isPayloadAvailable = true;
         }