[richfaces-svn-commits] JBoss Rich Faces SVN: r12351 - in trunk/ui/message/src: test/java/org/richfaces/component and 1 other directory.

richfaces-svn-commits at lists.jboss.org richfaces-svn-commits at lists.jboss.org
Tue Jan 20 09:55:23 EST 2009


Author: nbelaevski
Date: 2009-01-20 09:55:23 -0500 (Tue, 20 Jan 2009)
New Revision: 12351

Modified:
   trunk/ui/message/src/main/java/org/richfaces/component/UIRichMessages.java
   trunk/ui/message/src/test/java/org/richfaces/component/UIMessagesTest.java
Log:
https://jira.jboss.org/jira/browse/RF-5830

Modified: trunk/ui/message/src/main/java/org/richfaces/component/UIRichMessages.java
===================================================================
--- trunk/ui/message/src/main/java/org/richfaces/component/UIRichMessages.java	2009-01-20 13:44:58 UTC (rev 12350)
+++ trunk/ui/message/src/main/java/org/richfaces/component/UIRichMessages.java	2009-01-20 14:55:23 UTC (rev 12351)
@@ -28,7 +28,6 @@
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
-import java.util.Map.Entry;
 
 import javax.el.ELException;
 import javax.el.ValueExpression;
@@ -299,10 +298,30 @@
 		 * </p>
 		 */
 		private void writeObject(ObjectOutputStream out) throws IOException {
-			out.writeUTF(clientId);
+			if (clientId != null) {
+				out.writeBoolean(true);
+				out.writeUTF(clientId);
+			} else {
+				out.writeBoolean(false);
+			}
+
 			out.writeInt(message.getSeverity().getOrdinal());
-			out.writeUTF(message.getSummary());
-			out.writeUTF(message.getDetail());
+			
+			String summary = message.getSummary();
+			if (summary != null) {
+				out.writeBoolean(true);
+				out.writeUTF(summary);
+			} else {
+				out.writeBoolean(false);
+			}
+			
+			String detail = message.getDetail();
+			if (detail != null) {
+				out.writeBoolean(true);
+				out.writeUTF(detail);
+			} else {
+				out.writeBoolean(false);
+			}
 		}
 
 		/**
@@ -313,14 +332,27 @@
 		 */
 		private void readObject(ObjectInputStream in) throws IOException,
 				ClassNotFoundException {
-			clientId = in.readUTF();
+			
+			if (in.readBoolean()) {
+				clientId = in.readUTF();
+			}
+
 			Severity severity = FacesMessage.SEVERITY_INFO;
 			int ordinal = in.readInt();
 			if (ordinal >= 0 && ordinal < FacesMessage.VALUES.size()) {
 				severity = (Severity) FacesMessage.VALUES.get(ordinal);
 			}
-			String summary = in.readUTF();
-			String detail = in.readUTF();
+			
+			String summary = null;
+			if (in.readBoolean()) {
+				summary = in.readUTF();
+			}
+			
+			String detail = null;
+			if (in.readBoolean()) {
+				detail = in.readUTF();
+			}
+			
 			message = new FacesMessage(severity, summary, detail);
 		}
 

Modified: trunk/ui/message/src/test/java/org/richfaces/component/UIMessagesTest.java
===================================================================
--- trunk/ui/message/src/test/java/org/richfaces/component/UIMessagesTest.java	2009-01-20 13:44:58 UTC (rev 12350)
+++ trunk/ui/message/src/test/java/org/richfaces/component/UIMessagesTest.java	2009-01-20 14:55:23 UTC (rev 12351)
@@ -3,7 +3,11 @@
  */
 package org.richfaces.component;
 
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
@@ -215,6 +219,59 @@
 		uiMessages.addMessagesForId(facesContext, INPUT_ID, severenities);
 		assertEquals(1, uiMessages.getRenderedMessages().size());
 	}
+	
+	public void testMessageSerialization() throws Exception {
+		UIRichMessages.FacesMessageWithId message = saveRestore(new UIRichMessages.FacesMessageWithId("clientId", 
+			new FacesMessage(FacesMessage.SEVERITY_INFO, "summary", "detail")));
+	
+		assertEquals("clientId", message.getClientId());
+		assertNotNull(message.getMessage());
+		assertEquals(FacesMessage.SEVERITY_INFO, message.getMessage().getSeverity());
+		assertEquals("summary", message.getMessage().getSummary());
+		assertEquals("detail", message.getMessage().getDetail());
+		
+		message = saveRestore(new UIRichMessages.FacesMessageWithId(null, 
+				new FacesMessage()));
+	
+		assertNull(message.getClientId());
+		assertNotNull(message.getMessage());
+		assertNull(message.getMessage().getSummary());
+		assertNull(message.getMessage().getDetail());
+		
+		message = saveRestore(new UIRichMessages.FacesMessageWithId(null, 
+				new FacesMessage("summary")));
+
+		assertNull(message.getClientId());
+		assertNotNull(message.getMessage());
+		assertEquals("summary", message.getMessage().getSummary());
+		assertEquals("summary", message.getMessage().getDetail());
+
+		message = saveRestore(new UIRichMessages.FacesMessageWithId(null, 
+				new FacesMessage("summary", "detail")));
+
+		assertNull(message.getClientId());
+		assertNotNull(message.getMessage());
+		assertEquals("summary", message.getMessage().getSummary());
+		assertEquals("detail", message.getMessage().getDetail());
+
+	}
+	
+	private <T> T saveRestore(T t) throws IOException, ClassNotFoundException {
+		T newTInstance = null;
+		
+		ByteArrayOutputStream baos = new ByteArrayOutputStream();
+		ObjectOutputStream oos = new ObjectOutputStream(baos);
+		
+		oos.writeObject(t);
+		oos.close();
+
+		ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(baos.toByteArray()));
+		newTInstance = (T) ois.readObject();
+		ois.close();
+		
+		return newTInstance;
+	}
+	
 	/**
 	 * @return
 	 */




More information about the richfaces-svn-commits mailing list