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 2010/05/04 04:11:13 UTC

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

Author: simoneg
Date: Tue May  4 02:11:13 2010
New Revision: 940711

URL: http://svn.apache.org/viewvc?rev=940711&view=rev
Log:
Support for arrays in direct webhandler binding

Modified:
    labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/OnDemandBinder.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/ConvertedSessionHandler.java

Modified: labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/OnDemandBinder.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/OnDemandBinder.java?rev=940711&r1=940710&r2=940711&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/OnDemandBinder.java (original)
+++ labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/OnDemandBinder.java Tue May  4 02:11:13 2010
@@ -156,19 +156,44 @@ public class OnDemandBinder {
 	}
 
 	private Object fetchParam(String rawname, Class type) {
+		boolean isarray = type.isArray();
+		if (isarray) {
+			type = type.getComponentType();
+		}
 		if (uploads != null) {
 			FileItem[] item = uploads.get(rawname);
 			if (item != null) {
-				if (item[0].isFormField()) {
-					return convertFetch(item[0].getString(), type);
+				if (!isarray) {
+					if (item[0].isFormField()) {
+						return convertFetch(item[0].getString(), type);
+					} else {
+						return item[0];
+					}
 				} else {
-					return item[0];
+					Object[] ret = new Object[item.length];
+					for (int i = 0; i < item.length; i++) {
+						if (item[i].isFormField()) {
+							ret[i] = convertFetch(item[i].getString(), type);
+						} else {
+							ret[i] = item[i];
+						}
+					}
+					return ret;
 				}
 			} else {
 				return null;
 			}
 		} else {
-			return convertFetch(req.getParameter(rawname), type);
+			if (!isarray) {
+				return convertFetch(req.getParameter(rawname), type);
+			} else {
+				String[] vals = req.getParameterValues(rawname);
+				Object[] ret = new Object[vals.length];
+				for (int i = 0; i < vals.length; i++) {
+					ret[i] = convertFetch(vals[i], type); 
+				}
+				return ret;
+			}
 		}
 	}
 

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=940711&r1=940710&r2=940711&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 May  4 02:11:13 2010
@@ -20,6 +20,7 @@ import java.io.ByteArrayOutputStream;
 import java.util.Map;
 
 import org.apache.magma.website.producers.ProducerParameters;
+import org.apache.magma.website.teststuff.ConvertedSessionHandler;
 import org.apache.magma.website.teststuff.Person;
 import org.apache.magma.website.teststuff.FakeHtmlProducer;
 import org.apache.magma.website.teststuff.FakeHtmlProducer.CheckInside;
@@ -45,6 +46,29 @@ public class WebHandlerCycleTest {
 	}
 	
 	@Test
+	public void arrayBinding() throws Exception {
+		final DefaultExpectations def = new DefaultExpectations() {{
+			one(session).setAttribute("user", Person.class.getName() + ":Simone");
+			one(req).getParameterValues("people"); will(returnValue(new String[] {"Foo", "Bar"}));
+		}};
+		def.setupDefaults("/testSession/setUser");
+		
+		FakeHtmlProducer.checks = new CheckInside() {
+			public void check(FakeHtmlProducer prod) {
+				WebHandler handler = prod.getCreatingHandler();
+				ConvertedSessionHandler csh = (ConvertedSessionHandler) handler;
+				Person[] people = csh.getParamPeople();
+				assertEquals(2, people.length);
+				assertEquals("Foo", people[0].getName());
+				assertEquals("Bar", people[1].getName());
+			}
+		};
+		
+		def.start();
+		
+	}
+	
+	@Test
 	public void redirectURI() throws Exception {
 		final DefaultExpectations def = new DefaultExpectations() {{
 			one(resp).sendRedirect("http://www.google.com/");

Modified: 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=940711&r1=940710&r2=940711&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/teststuff/ConvertedSessionHandler.java (original)
+++ labs/magma/trunk/foundation-website/src/test/java/org/apache/magma/website/teststuff/ConvertedSessionHandler.java Tue May  4 02:11:13 2010
@@ -23,6 +23,7 @@ import org.apache.magma.website.WebHandl
 public class ConvertedSessionHandler extends WebHandler {
 
 	private Person sessionUser = null;
+	private Person[] paramPeople;
 
 	public Person getSessionUser() {
 		return sessionUser;
@@ -55,5 +56,9 @@ public class ConvertedSessionHandler ext
 	public HtmlProducer doResendLink() {
 		return root().handleAux().doCheckLinks();
 	}
+
+	public Person[] getParamPeople() {
+		return paramPeople;
+	}
 	
 }



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