[Yanel-commits] rev 28243 - in public/yanel/trunk/src: core/java/org/wyona/yanel/core webapp/src/java/org/wyona/yanel/servlet webapp/src/java/org/wyona/yanel/servlet/communication

michi at wyona.com michi at wyona.com
Tue Oct 30 09:56:50 CET 2007


Author: michi
Date: 2007-10-30 09:56:48 +0100 (Tue, 30 Oct 2007)
New Revision: 28243

Modified:
   public/yanel/trunk/src/core/java/org/wyona/yanel/core/ResourceManager.java
   public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/YanelServlet.java
   public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/communication/HttpRequest.java
Log:
file upload size problem fixed

Modified: public/yanel/trunk/src/core/java/org/wyona/yanel/core/ResourceManager.java
===================================================================
--- public/yanel/trunk/src/core/java/org/wyona/yanel/core/ResourceManager.java	2007-10-30 08:53:52 UTC (rev 28242)
+++ public/yanel/trunk/src/core/java/org/wyona/yanel/core/ResourceManager.java	2007-10-30 08:56:48 UTC (rev 28243)
@@ -153,7 +153,7 @@
     /**
      * Passes request parameter to a resource.
      * String parameters will be decoded.
-     * TODO: handle multipart requests.
+     * File upload parameters of multipart requests won't be passed.
      * @param resource
      * @param request
      */

Modified: public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/YanelServlet.java
===================================================================
--- public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/YanelServlet.java	2007-10-30 08:53:52 UTC (rev 28242)
+++ public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/YanelServlet.java	2007-10-30 08:56:48 UTC (rev 28243)
@@ -556,7 +556,7 @@
             } catch(org.wyona.yarep.core.NoSuchNodeException e) {
                 // TODO: Log all 404 within a dedicated file (with client info attached) such that an admin can react to it ...
                 String message = "No such node exception: " + e;
-                log.warn(e);
+                log.warn(e, e);
                 // Show the stack trace
                 //log.warn(e.getMessage(), e);
                 Element exceptionElement = (Element) rootElement.appendChild(doc.createElementNS(NAMESPACE, "exception"));
@@ -888,17 +888,7 @@
         */
 
         InputStream in = request.getInputStream();
-        java.io.ByteArrayOutputStream baos  = new java.io.ByteArrayOutputStream();
-        byte[] buf = new byte[8192];
-        int bytesR;
-        while ((bytesR = in.read(buf)) != -1) {
-            baos.write(buf, 0, bytesR);
-        }
 
-        // Buffer within memory (TODO: Maybe replace with File-buffering ...)
-        // http://www-128.ibm.com/developerworks/java/library/j-io1/
-        byte[] memBuffer = baos.toByteArray();
-
             // TODO: Should be delegated to resource type, e.g. <{http://...}xml/>!
             // Check on well-formedness ...
             String contentType = request.getContentType();
@@ -912,6 +902,17 @@
                     // TODO: Get log messages into log4j ...
                     //parser.setErrorHandler(...);
 
+                    java.io.ByteArrayOutputStream baos  = new java.io.ByteArrayOutputStream();
+                    byte[] buf = new byte[8192];
+                    int bytesR;
+                    while ((bytesR = in.read(buf)) != -1) {
+                        baos.write(buf, 0, bytesR);
+                    }
+
+                    // Buffer within memory (TODO: Maybe replace with File-buffering ...)
+                    // http://www-128.ibm.com/developerworks/java/library/j-io1/
+                    byte[] memBuffer = baos.toByteArray();
+                    
                     // NOTE: DOCTYPE is being resolved/retrieved (e.g. xhtml schema from w3.org) also
                     //       if isValidating is set to false.
                     //       Hence, for performance and network reasons we use a local catalog ...
@@ -920,7 +921,8 @@
                     // TODO: What about a resolver factory?
                     parser.setEntityResolver(new org.apache.xml.resolver.tools.CatalogResolver());
 
-                    parser.parse(new java.io.ByteArrayInputStream(memBuffer));
+                    parser.parse(new ByteArrayInputStream(memBuffer));
+                    in = new ByteArrayInputStream(memBuffer);
                     //org.w3c.dom.Document document = parser.parse(new ByteArrayInputStream(memBuffer));
                 } catch (org.xml.sax.SAXException e) {
                     log.warn("Data is not well-formed: "+e.getMessage());
@@ -957,22 +959,19 @@
                 log.info("No well-formedness check required for content type: " + contentType);
             }
 
-        java.io.ByteArrayInputStream memIn = new java.io.ByteArrayInputStream(memBuffer);
-
-
         // IMPORTANT TODO: Use ModifiableV2.write(InputStream in) such that resource can modify data during saving resp. check if getOutputStream is equals null and then use write ....
         OutputStream out = null;
         Resource res = getResource(request, response);
         if (ResourceAttributeHelper.hasAttributeImplemented(res, "Modifiable", "1")) {
             out = ((ModifiableV1) res).getOutputStream(new Path(request.getServletPath()));
-            write(memIn, out, request, response);
+            write(in, out, request, response);
         } else if (ResourceAttributeHelper.hasAttributeImplemented(res, "Modifiable", "2")) {
             try {
                 out = ((ModifiableV2) res).getOutputStream();
                 if (out != null) {
-                    write(memIn, out, request, response);
+                    write(in, out, request, response);
                 } else {
-                    ((ModifiableV2) res).write(memIn);
+                    ((ModifiableV2) res).write(in);
                 }
             } catch (Exception e) {
                 log.error(e.getMessage(), e);

Modified: public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/communication/HttpRequest.java
===================================================================
--- public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/communication/HttpRequest.java	2007-10-30 08:53:52 UTC (rev 28242)
+++ public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/communication/HttpRequest.java	2007-10-30 08:56:48 UTC (rev 28243)
@@ -152,7 +152,10 @@
             Iterator iter = this.items.iterator();
             while (iter.hasNext()) {
                 FileItem item = (FileItem)iter.next();
-                set.add(item.getFieldName());
+                if (item.isFormField()) {
+                    // don't add file upload fields
+                    set.add(item.getFieldName());
+                }
             }
             return new Vector(set).elements();
         }



More information about the Yanel-commits mailing list