[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