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