labs-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From simo...@apache.org
Subject svn commit: r792769 - /labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/OnDemandBinder.java
Date Fri, 10 Jul 2009 00:39:34 GMT
Author: simoneg
Date: Fri Jul 10 00:39:34 2009
New Revision: 792769

URL: http://svn.apache.org/viewvc?rev=792769&view=rev
Log:
LABS-379 : avoid "cookie lag"
LABS-380 : preliminary support of file upload directly in the binder.

Modified:
    labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/utils/OnDemandBinder.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=792769&r1=792768&r2=792769&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
Fri Jul 10 00:39:34 2009
@@ -1,6 +1,8 @@
 package org.apache.magma.website.utils;
 
 import java.beans.Introspector;
+import java.io.File;
+import java.io.IOException;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
@@ -12,6 +14,7 @@
 import javax.servlet.http.HttpSession;
 
 import org.apache.commons.fileupload.FileItem;
+import org.apache.magma.basics.MagmaException;
 import org.apache.magma.conversion.Converter;
 import org.apache.magma.conversion.Converters;
 
@@ -69,15 +72,25 @@
 			Map<String, String[]> params = new HashMap<String, String[]>();
 			for (Map.Entry<String, FileItem[]> entry : uploads.entrySet()) {
 				FileItem[] items = entry.getValue();
-				if (items[0].isFormField()) {
-					String[] vals = new String[items.length];
-					for (int i = 0; i < vals.length; i++) {
-						//try {
-							vals[i] = items[i].getString();
-						//} catch (UnsupportedEncodingException e) {}
+				String[] vals = new String[items.length];
+				for (int i = 0; i < vals.length; i++) {
+					if (items[0].isFormField()) {
+						vals[i] = items[i].getString();
+					} else {
+						File f;
+						try {
+							f = File.createTempFile("magma_upload", ".raw");
+							items[i].write(f);
+						} catch (Exception e) {
+							throw new MagmaException(e, "Error saving temporary uploaded file");
+						}
+						String origname = items[i].getName();
+						origname = origname.replaceAll("\\\\", "/");
+						String[] split = origname.split("/");
+						vals[i] = split[split.length - 1] + "/" + f.getAbsolutePath();
 					}
-					params.put(entry.getKey(), vals);
 				}
+				params.put(entry.getKey(), vals);
 			}
 			return params;
 		}
@@ -213,21 +226,23 @@
 			cleanedCookies.remove(rawname);
 		}
 		
-		boolean found = false;
+		Cookie mycookie = null;
 		if (cookies != null) {		
 			for (Cookie cookie : cookies) {
 				if (cookie.getName().equals(rawname)) {
-					found = true;
+					mycookie = cookie;
 					break;
 				}
 			}
 		}
 		if (value != null) {
-			Cookie ncookie = new Cookie(rawname,(String) convertStore(value));
+			String nval = (String) convertStore(value);
+			Cookie ncookie = new Cookie(rawname, nval);
 			ncookie.setMaxAge(2592000);
 			ncookie.setPath("/");
 			resp.addCookie(ncookie);
-		} else if (found && value == null) {
+			if (mycookie != null) mycookie.setValue(nval);
+		} else if (mycookie != null && value == null) {
 			Cookie ncookie = new Cookie(rawname,"");
 			ncookie.setMaxAge(0);
 			ncookie.setPath("/");



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


Mime
View raw message