You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by si...@apache.org on 2008/09/23 13:03:49 UTC

svn commit: r698134 - in /labs/magma/trunk/foundation-website/src: main/java/org/apache/magma/website/ main/java/org/apache/magma/website/utils/ test/java/org/apache/magma/website/ test/java/org/apache/magma/website/teststuff/

Author: simoneg
Date: Tue Sep 23 04:03:49 2008
New Revision: 698134

URL: http://svn.apache.org/viewvc?rev=698134&view=rev
Log:
LABS-180 : values from and to session gets converted to strings whenever possible

Added:
    labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/teststuff/ConvertedSessionHandler.java
Modified:
    labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/HandlerSetup.aj
    labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/Binder.java
    labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/WebHandlerCycleTest.java
    labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/teststuff/InferTestIntoRoot.aj

Modified: labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/HandlerSetup.aj
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/HandlerSetup.aj?rev=698134&r1=698133&r2=698134&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/HandlerSetup.aj (original)
+++ labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/HandlerSetup.aj Tue Sep 23 04:03:49 2008
@@ -16,6 +16,7 @@
  */
 package org.apache.magma.website;
 
+import org.apache.magma.basics.MagmaException;
 import org.apache.magma.beans.MagmaBeanSupport;
 import org.apache.magma.conversion.Converter;
 import org.apache.magma.conversion.Converters;
@@ -57,14 +58,14 @@
 				Binder.bind(h, request);
 				h.inited = true;
 			} catch (Throwable e) {
-				e.printStackTrace();
+				throw new MagmaException(e, "Error while setting up {0}", h.getClass());
 			}
 			retObj = proceed(h);
 			try {
 				Binder.flush(h, request, response);
 				h.inited = false;
 			} catch (Throwable e) {
-				e.printStackTrace();
+				throw new MagmaException(e, "Error while reading attributes from {0}", h.getClass());
 			}
 		} else {
 			retObj = proceed(h);

Modified: labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/Binder.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/Binder.java?rev=698134&r1=698133&r2=698134&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/Binder.java (original)
+++ labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/Binder.java Tue Sep 23 04:03:49 2008
@@ -31,6 +31,8 @@
 import org.apache.magma.beans.BeanHandler;
 import org.apache.magma.beans.MagmaBeanSupport;
 import org.apache.magma.beans.PropertyInfo;
+import org.apache.magma.conversion.Converter;
+import org.apache.magma.conversion.Converters;
 import org.apache.magma.website.WebHandler;
 
 
@@ -49,6 +51,12 @@
 				name = fromJavaName(name, 7);
 				HttpSession session = request.getSession();
 				Object attribute = session.getAttribute(name);
+				if (attribute != null && attribute instanceof String) {
+					Converter converter = property.getConverter();
+					if (converter != null) {
+						attribute = converter.fromString((String)attribute);
+					}
+				}
 				handler.setValue(property.getName(), attribute);
 			} else if (name.startsWith("header")) {
 				name = fromJavaName(name, 6);
@@ -101,6 +109,12 @@
 				if (value == null) {
 					session.removeAttribute(name);
 				} else {
+					if (value != null) {
+						Converter converter = Converters.getConverterFor(value.getClass());
+						if (converter != null) {
+							value = converter.toString(value);
+						}
+					}
 					session.setAttribute(name, value);
 				}
 			} else if (name.startsWith("header")) {
@@ -113,6 +127,7 @@
 				name = fromJavaName(name, 6);
 				if (cookies == null)
 					cookies = request.getCookies();
+				if (cookies == null) continue;
 				boolean found = false;
 				for (Cookie cookie : cookies) {
 					if (cookie.getName().equals(name)) {

Modified: labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/WebHandlerCycleTest.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/WebHandlerCycleTest.java?rev=698134&r1=698133&r2=698134&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/WebHandlerCycleTest.java (original)
+++ labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/WebHandlerCycleTest.java Tue Sep 23 04:03:49 2008
@@ -592,5 +592,34 @@
 		
 		mock.assertIsSatisfied();		
 	}	
+
+	@Test
+	public void sessionConversion() throws Exception {
+		Mockery mock = new Mockery();
+		
+		final HttpServletRequest req = mock.mock(HttpServletRequest.class);
+		final HttpServletResponse resp = mock.mock(HttpServletResponse.class);
+		final HttpSession session = mock.mock(HttpSession.class);
+		final MockServletOutputStream out = new MockServletOutputStream();
+		
+		mock.checking(new Expectations() {{
+			one(req).getPathInfo(); will(returnValue("/testSession/setUser"));
+			one(req).getContextPath(); will(returnValue(""));
+			one(req).getServletPath(); will(returnValue(""));			
+			allowing(req).getSession(); will(returnValue(session));
+			one(session).getAttribute("user"); will(returnValue("Massimo"));			
+			one(req).setAttribute("__magma_url","/testSession/setUser");
+			allowing(req).getAttribute("__magma_url"); will(returnValue("/testSession/setUser"));
+			one(session).getAttribute("__magma_lastmain"); will(returnValue(null));						
+			one(session).setAttribute("user", "Simone");
+			one(session).setAttribute("__magma_lastmain", "/testSession/setUser");						
+			allowing(resp).getOutputStream(); will(returnValue(out));
+		}});
+		
+		Dispatch disp = new Dispatch();		
+		disp.doGet(req, resp);
+		
+		mock.assertIsSatisfied();		
+	}	
 	
 }

Added: labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/teststuff/ConvertedSessionHandler.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/teststuff/ConvertedSessionHandler.java?rev=698134&view=auto
==============================================================================
--- labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/teststuff/ConvertedSessionHandler.java (added)
+++ labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/teststuff/ConvertedSessionHandler.java Tue Sep 23 04:03:49 2008
@@ -0,0 +1,28 @@
+package org.apache.magma.website.teststuff;
+
+import org.apache.magma.website.HtmlProducer;
+import org.apache.magma.website.WebHandler;
+
+public class ConvertedSessionHandler extends WebHandler {
+
+	private Person sessionUser = null;
+
+	public Person getSessionUser() {
+		return sessionUser;
+	}
+
+	public void setSessionUser(Person sessionUser) {
+		this.sessionUser = sessionUser;
+	}
+	
+	public HtmlProducer doSetUser() {
+		this.sessionUser = Person.getPerson("Simone");
+		return new FakeHtmlProducer();
+	}
+	
+	public HtmlProducer doUnsetUser() {
+		this.sessionUser = null;
+		return new FakeHtmlProducer();
+	}
+	
+}

Modified: labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/teststuff/InferTestIntoRoot.aj
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/teststuff/InferTestIntoRoot.aj?rev=698134&r1=698133&r2=698134&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/teststuff/InferTestIntoRoot.aj (original)
+++ labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/teststuff/InferTestIntoRoot.aj Tue Sep 23 04:03:49 2008
@@ -24,6 +24,10 @@
 		return new SimpleWebHandler();
 	}
 	
+	public ConvertedSessionHandler RootWebHandler.handleTestSession() {
+		return new ConvertedSessionHandler();
+	}
+	
 	public AuxiliaryWebHandler RootWebHandler.handleAux() {
 		return new AuxiliaryWebHandler();
 	}



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org