Update of /var/cvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib/util
In directory james.mmbase.org:/tmp/cvs-serv21776/util
Modified Files:
ContextContainer.java MultiPart.java
Log Message:
Migrated MultiPart object to mmbase jar itself
See also:
http://cvs.mmbase.org/viewcvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib/util
Index: ContextContainer.java
===================================================================
RCS file:
/var/cvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib/util/ContextContainer.java,v
retrieving revision 1.65
retrieving revision 1.66
diff -u -b -r1.65 -r1.66
--- ContextContainer.java 10 Mar 2009 14:04:55 -0000 1.65
+++ ContextContainer.java 17 Apr 2009 17:38:51 -0000 1.66
@@ -25,7 +25,7 @@
* there is searched for HashMaps in the HashMap.
*
* @author Michiel Meeuwissen
- * @version $Id: ContextContainer.java,v 1.65 2009/03/10 14:04:55 michiel Exp $
+ * @version $Id: ContextContainer.java,v 1.66 2009/04/17 17:38:51 michiel Exp $
**/
public abstract class ContextContainer extends AbstractMap<String, Object>
implements Map<String, Object> {
@@ -582,7 +582,11 @@
if (mp.isFile(referId)) {
result = mp.getFileItem(referId);
} else {
+ try {
result = fixEncoding(mp.getParameterValues(referId),
pageContext);
+ } catch (java.io.UnsupportedEncodingException uee) {
+ throw new JspTagException(uee);
+ }
}
//result =
MultiPart.getMultipartRequest(pageContext).getParameterValues(referId);
} else {
Index: MultiPart.java
===================================================================
RCS file:
/var/cvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib/util/MultiPart.java,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -b -r1.20 -r1.21
--- MultiPart.java 4 Sep 2008 14:31:08 -0000 1.20
+++ MultiPart.java 17 Apr 2009 17:38:51 -0000 1.21
@@ -21,48 +21,18 @@
/**
* Taglib needs to read Multipart request sometimes. Functionallity is
centralized here.
* @author Michiel Meeuwissen
- * @version $Id: MultiPart.java,v 1.20 2008/09/04 14:31:08 michiel Exp $
+ * @version $Id: MultiPart.java,v 1.21 2009/04/17 17:38:51 michiel Exp $
+ * @deprecated
**/
-public class MultiPart {
+public class MultiPart extends org.mmbase.datatypes.handlers.html.MultiPart {
+
private static final Logger log =
Logging.getLoggerInstance(MultiPart.class);
static String MULTIPARTREQUEST_KEY = "__multipart";
public static boolean isMultipart(PageContext pageContext) {
- String ct =
((HttpServletRequest)pageContext.getRequest()).getContentType();
- if (ct == null) {
- return false;
- }
- return (ct.startsWith("multipart/"));
- }
-
- /**
- * @since MMBase-1.8.7
- */
- public static MMultipartRequest getMultipartRequest(HttpServletRequest
request, String encoding) {
- MMultipartRequest multipartRequest = (MMultipartRequest)
request.getAttribute(MULTIPARTREQUEST_KEY);
- if (multipartRequest == null) {
- log.debug("Creating new MultipartRequest");
- multipartRequest = new MMultipartRequest(request, encoding);
- log.debug("have it");
-
- if (log.isDebugEnabled()) {
- if (multipartRequest != null) {
- StringBuilder params = new StringBuilder();
- for (String paramName : (Collection<String>)
multipartRequest.getParameterNames()) {
- params.append(paramName).append(",");
- }
- log.debug("multipart parameters: " + params);
- } else {
- log.debug("not a multipart request");
- }
- }
- request.setAttribute(MULTIPARTREQUEST_KEY, multipartRequest);
- } else {
- log.debug("Found multipart request on pageContext" +
multipartRequest);
- }
- return multipartRequest;
+ return isMultipart((HttpServletRequest)pageContext.getRequest());
}
public static MMultipartRequest getMultipartRequest(PageContext
pageContext) {
@@ -70,154 +40,6 @@
}
- static public class MMultipartRequest {
-
- private Map<String, Object> parametersMap = new HashMap<String,
Object>();
- private String coding = null;
-
- MMultipartRequest(HttpServletRequest req, String c) {
- try {
- DiskFileUpload fu = new DiskFileUpload();
- fu.setHeaderEncoding("ISO-8859-1"); // if incorrect, it will
be fixed later.
- List fileItems = fu.parseRequest(req);
- for (Iterator i = fileItems.iterator(); i.hasNext(); ) {
- FileItem fi = (FileItem)i.next();
- if (fi.isFormField()) {
- String value;
- try {
- value = fi.getString("ISO-8859-1");
- } catch(java.io.UnsupportedEncodingException uee) {
- log.error("could not happen, ISO-8859-1 is
supported");
- value = fi.getString();
- }
- Object oldValue = parametersMap.get(fi.getFieldName());
- if (oldValue == null ) {
- parametersMap.put(fi.getFieldName(), value);
- } else if (!(oldValue instanceof FileItem)) {
- List<Object> values;
- if (oldValue instanceof String) {
- values = new ArrayList<Object>();
- values.add(oldValue);
- } else {
- values = (List<Object>)oldValue;
- }
- values.add(value);
- parametersMap.put(fi.getFieldName(), values);
- }
- } else {
- parametersMap.put(fi.getFieldName(), fi);
- }
- }
- } catch (FileUploadException e) {
- log.error(e.getMessage(), e);
- throw new RuntimeException(e);
- }
- coding = c;
- log.debug("Created with encoding: " + coding);
- }
-
- /**
- * Method to retrieve the bytes of an uploaded file.
- * @param param The name of the parameter
- * @return <code>null</code> if parameter not found, otherwise the
bytes from the parameter
- */
- public byte[] getBytes(String param) throws JspTagException {
- log.debug("Getting bytes for " + param);
- Object value = parametersMap.get(param);
- if (value instanceof FileItem) {
- try {
- return ((FileItem)value).get();
- } catch (Exception e) {
- throw new TaglibException(e);
- }
- } else {
- return null;
- }
- }
- public FileItem getFileItem(String param) throws JspTagException {
- log.debug("Getting outputstream for " + param);
- Object value = parametersMap.get(param);
- if (value instanceof FileItem) {
- try {
- return (FileItem)value;
- } catch (Exception e) {
- throw new TaglibException(e);
- }
- } else {
- return null;
- }
- }
-
- /**
- * Method to retrieve the bytes of an uploaded file as a string using
eitehr the encoding specified in the file or
- * the default encoding.
- * @return <code>null</code> if parameter not found, otherwise the
bytes from the parameter
- */
- protected String encodeBytesAsString(byte[] data) throws
JspTagException {
- String encoding = coding;
- // get first 60 bytes to determine if this is a xml type
- byte[] xmlbytes = new byte[60];
- int sz = data.length;
- if (sz > 60) sz = 60;
- System.arraycopy(data, 0, xmlbytes, 0, sz);
- String xmltext = new String(xmlbytes);
- if (xmltext.startsWith("<?xml")) {
- int i = xmltext.indexOf("encoding");
- log.debug("i=*" + i + "*");
- if (i > 0) {
- int j = xmltext.indexOf("?>", i);
- log.debug("j=*" + j + "*");
- if (j > i) {
- // get trimmed attribute value
- encoding = xmltext.substring(i + 8, j).trim();
- // trim '='
- encoding = encoding.substring(1).trim();
- // trim quotes
- encoding = encoding.substring(1, encoding.length() -
1).trim();
- }
- }
- }
- try {
- return new String(data, encoding);
- } catch (java.io.UnsupportedEncodingException e) {
- throw new TaglibException(e);
- }
- }
-
- /**
- * @since MMBase-1.8
- */
- public boolean isFile(String param) {
- Object value = parametersMap.get(param);
- return value instanceof FileItem;
- }
- /**
- * Method to retrieve the parameter.
- * @param param The name of the parameter
- * @return <code>null</code> if parameter not found, when a single
occurence of the parameter
- * the result as a <code>String</code> using the encoding specified.
When if was a MultiParameter parameter, it will return
- * a <code>List</code> of <code>String</code>'s
- */
- public Object getParameterValues(String param) throws JspTagException {
- // this method will return null, if the parameter is not set...
- Object value = parametersMap.get(param);
- //log.debug("Got param " + param + " " + (value == null ? "NULL" :
value.getClass().getName()) + " " + value);
-
- if (value instanceof FileItem) {
- try {
- return encodeBytesAsString(((FileItem)value).get());
- } catch (Exception e) {
- throw new TaglibException(e);
- }
- } else {
- return value;
- }
- }
-
- public Collection<String> getParameterNames() {
- return parametersMap.keySet();
- }
- }
}
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs