Want more features on Pastebin? Sign Up, it's FREE!
Guest

Untitled

By: a guest on Nov 4th, 2011  |  syntax: None  |  size: 5.71 KB  |  views: 15  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. From 5ff8e662f8f4846fb8cb2aeb4536bbafb4fa4246 Mon Sep 17 00:00:00 2001
  2. From: unknown <karlsnic@.fi.dom>
  3. Date: Fri, 4 Nov 2011 13:55:57 +0200
  4. Subject: [PATCH] messagepropagation
  5.  
  6. ---
  7.  .../jboss/seam/faces/status/MessagesAdapter.java   |  130 ++++++++++++--------
  8.  1 files changed, 81 insertions(+), 49 deletions(-)
  9.  
  10. diff --git a/impl/src/main/java/org/jboss/seam/faces/status/MessagesAdapter.java b/impl/src/main/java/org/jboss/seam/faces/status/MessagesAdapter.java
  11. index a000552..c26351e 100644
  12. --- a/impl/src/main/java/org/jboss/seam/faces/status/MessagesAdapter.java
  13. +++ b/impl/src/main/java/org/jboss/seam/faces/status/MessagesAdapter.java
  14. @@ -17,6 +17,7 @@
  15.  package org.jboss.seam.faces.status;
  16.  
  17.  import java.io.Serializable;
  18. +import java.util.LinkedHashSet;
  19.  import java.util.Set;
  20.  
  21.  import javax.enterprise.event.Observes;
  22. @@ -42,64 +43,95 @@ import org.jboss.solder.logging.Logger;
  23.   * </p>
  24.   * <p/>
  25.   * <p>
  26. - * NOTE This class is using method parameter injection of Messages rather than field injection to work around GLASSFISH-15721.
  27. - * This shouldn't be necessary starting with Weld 1.1.1.
  28. + * NOTE This class is using method parameter injection of Messages rather than
  29. + * field injection to work around GLASSFISH-15721. This shouldn't be necessary
  30. + * starting with Weld 1.1.1.
  31.   * </p>
  32. - *
  33. + *
  34.   * @author <a href="mailto:lincolnbaxter@gmail.com">Lincoln Baxter, III</a>
  35.   * @author <a href="http://community.jboss.org/people/dan.j.allen">Dan Allen</a>
  36.   */
  37. -public class MessagesAdapter implements Serializable {
  38. -    private static final long serialVersionUID = -2908193057765795662L;
  39. -    private transient final Logger log = Logger.getLogger(MessagesAdapter.class);
  40. +public class MessagesAdapter implements Serializable
  41. +{
  42. +       private static final long serialVersionUID = -2908193057765795662L;
  43. +       private transient final Logger log = Logger.getLogger(MessagesAdapter.class);
  44. +
  45. +       private static final String FLASH_MESSAGES_KEY = MessagesAdapter.class.getName() + ".FLASH_KEY";
  46.  
  47. -    private static final String FLASH_MESSAGES_KEY = MessagesAdapter.class.getName() + ".FLASH_KEY";
  48. +       @Inject
  49. +       RenderContext context;
  50.  
  51. -    @Inject
  52. -    RenderContext context;
  53. +       private abstract class MessageProcessor
  54. +       {
  55. +               public void process(Messages messages)
  56. +               {
  57. +                       @SuppressWarnings("unchecked")
  58. +                       Set<Message> savedMessages = (Set<Message>) context.get(FLASH_MESSAGES_KEY);
  59. +                       Set<Message> combinedMessages = new LinkedHashSet<Message>();
  60. +                       if (savedMessages != null)
  61. +                       {
  62. +                               log.debug("Picked up " + savedMessages.size() + " previously stored messages");
  63. +                               combinedMessages.addAll(savedMessages);
  64. +                       }
  65. +                       combinedMessages.addAll(messages.getAll());
  66. +                       if (!combinedMessages.isEmpty())
  67. +                       {
  68. +                               work(combinedMessages);
  69. +                               messages.clear();
  70. +                       }
  71. +               }
  72.  
  73. -    void flushBeforeNavigate(@Observes final PreNavigateEvent event, Messages messages) {
  74. -        if (!messages.getAll().isEmpty()) {
  75. -            log.debug("Saving status Messages to Flash Scope");
  76. -            context.put(FLASH_MESSAGES_KEY, messages.getAll());
  77. -            messages.clear();
  78. -        }
  79. -    }
  80. +               protected abstract void work(Set<Message> combinedMessages);
  81. +       }
  82.  
  83. -    @SuppressWarnings("unchecked")
  84. -    void convert(@Observes @Before @RenderResponse final PhaseEvent event, Messages messages) {
  85. -        Set<Message> savedMessages = (Set<Message>) context.get(FLASH_MESSAGES_KEY);
  86. -        if (savedMessages != null) {
  87. -            for (Message m : savedMessages) {
  88. -                event.getFacesContext().addMessage(m.getTargets(),
  89. -                        new FacesMessage(getSeverity(m.getLevel()), m.getText(), null));
  90. -            }
  91. -        }
  92. +       void flushBeforeNavigate(@Observes final PreNavigateEvent event, Messages messages)
  93. +       {
  94. +               new MessageProcessor()
  95. +               {
  96. +                       @Override
  97. +                       protected void work(Set<Message> combinedMessages)
  98. +                       {
  99. +                               log.debug("Saving " + combinedMessages.size() + " status Messages to Flash Scope");
  100. +                               context.put(FLASH_MESSAGES_KEY, combinedMessages);
  101. +                       }
  102. +               }.process(messages);
  103. +       }
  104.  
  105. -        for (Message m : messages.getAll()) {
  106. -            event.getFacesContext().addMessage(m.getTargets(), new FacesMessage(getSeverity(m.getLevel()), m.getText(), null));
  107. -        }
  108. -        messages.clear();
  109. -    }
  110. +       void convert(@Observes @Before @RenderResponse final PhaseEvent event, Messages messages)
  111. +       {
  112. +               new MessageProcessor()
  113. +               {
  114. +                       @Override
  115. +                       protected void work(Set<Message> combinedMessages)
  116. +                       {
  117. +                               for (Message m : combinedMessages)
  118. +                               {
  119. +                                       event.getFacesContext().addMessage(m.getTargets(), new FacesMessage(getSeverity(m.getLevel()), m.getText(), null));
  120. +                               }
  121. +                       }
  122. +               }.process(messages);
  123. +       }
  124.  
  125. -    private Severity getSeverity(final Level level) {
  126. -        Severity result = FacesMessage.SEVERITY_INFO;
  127. -        switch (level) {
  128. -            case INFO:
  129. -                break;
  130. -            case WARN:
  131. -                result = FacesMessage.SEVERITY_WARN;
  132. -                break;
  133. -            case ERROR:
  134. -                result = FacesMessage.SEVERITY_ERROR;
  135. -                break;
  136. -            case FATAL:
  137. -                result = FacesMessage.SEVERITY_FATAL;
  138. -                break;
  139. -            default:
  140. -                break;
  141. -        }
  142. -        return result;
  143. -    }
  144. +       private Severity getSeverity(final Level level)
  145. +       {
  146. +               Severity result = FacesMessage.SEVERITY_INFO;
  147. +               switch (level)
  148. +               {
  149. +               case INFO:
  150. +                       break;
  151. +               case WARN:
  152. +                       result = FacesMessage.SEVERITY_WARN;
  153. +                       break;
  154. +               case ERROR:
  155. +                       result = FacesMessage.SEVERITY_ERROR;
  156. +                       break;
  157. +               case FATAL:
  158. +                       result = FacesMessage.SEVERITY_FATAL;
  159. +                       break;
  160. +               default:
  161. +                       break;
  162. +               }
  163. +               return result;
  164. +       }
  165.  
  166.  }
  167. --
  168. 1.7.0.2.msysgit.0
  169.  
  170.  
clone this paste RAW Paste Data