From 19c2858b328b85a04fa61c46d88fc1ab9e3da29b Mon Sep 17 00:00:00 2001 From: hns Date: Mon, 4 Jun 2007 08:03:36 +0000 Subject: [PATCH] Fix RequestTrans.set() for multiple file upload items with the same name. --- src/helma/framework/RequestTrans.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/helma/framework/RequestTrans.java b/src/helma/framework/RequestTrans.java index 9a5b4f5f..ea7910d9 100644 --- a/src/helma/framework/RequestTrans.java +++ b/src/helma/framework/RequestTrans.java @@ -128,12 +128,13 @@ public class RequestTrans implements Serializable { */ public void set(String name, Object value) { int bracket = name.indexOf('['); + Object previousValue; if (bracket > -1 && name.endsWith("]")) { Matcher m = paramPattern.matcher(name); String partName = name.substring(0, bracket); Map map = values; while (m.find()) { - Object previousValue = map.get(partName); + previousValue = map.get(partName); Map partMap; if (previousValue == null) { partMap = new SystemMap(); @@ -146,11 +147,15 @@ public class RequestTrans implements Serializable { partName = m.group(1); map = partMap; } - if (map.put(partName, value) != null) - throw new RuntimeException("Conflicting HTTP Parameters for '" + name + "'");; + previousValue = map.put(partName, value); + if (previousValue != null && + (!(previousValue instanceof Object[]) || ! partName.endsWith("_array"))) + throw new RuntimeException("Conflicting HTTP Parameters for '" + name + "'"); } else { - if (values.put(name, value) != null) - throw new RuntimeException("Conflicting HTTP Parameters for '" + name + "'");; + previousValue = values.put(name, value); + if (previousValue != null && + (!(previousValue instanceof Object[]) || !name.endsWith("_array"))) + throw new RuntimeException("Conflicting HTTP Parameters for '" + name + "'"); } }