Update of /var/cvs/applications/resources/src/org/mmbase/servlet
In directory james.mmbase.org:/tmp/cvs-serv4564
Modified Files:
HandleServlet.java
Log Message:
MMB-1750
See also:
http://cvs.mmbase.org/viewcvs/applications/resources/src/org/mmbase/servlet
See also: http://www.mmbase.org/jira/browse/MMB-1750
Index: HandleServlet.java
===================================================================
RCS file:
/var/cvs/applications/resources/src/org/mmbase/servlet/HandleServlet.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- HandleServlet.java 26 Sep 2008 10:12:26 -0000 1.3
+++ HandleServlet.java 9 Dec 2008 15:59:54 -0000 1.4
@@ -28,7 +28,7 @@
* specialized servlets. The mime-type is always application/x-binary, forcing
the browser to
* download.
*
- * @version $Id: HandleServlet.java,v 1.3 2008/09/26 10:12:26 michiel Exp $
+ * @version $Id: HandleServlet.java,v 1.4 2008/12/09 15:59:54 michiel Exp $
* @author Michiel Meeuwissen
* @since MMBase-1.6
* @see ImageServlet
@@ -43,7 +43,7 @@
private static Cache<Integer, Integer> jpegSizes = null;
- protected Map getAssociations() {
+ protected Map<String, Integer> getAssociations() {
Map a = super.getAssociations();
// Can do the following:
a.put("attachments", 0);
@@ -150,13 +150,17 @@
*/
protected String getContentDisposition(QueryParts query, Node node, String
def) {
String fileNamePart = query.getFileName();
- if(fileNamePart != null && fileNamePart.startsWith("/inline/")) {
+ if(fileNamePart != null) {
+ if (fileNamePart.startsWith("/inline/")) {
return "inline";
- } else {
+ }
+ if (fileNamePart.startsWith("/attachment/")) {
+ return "attachment";
+ }
+ }
String cd =
node.getNodeManager().getProperty("Content-Disposition");
return cd == null ? def : cd;
}
- }
/**
@@ -209,6 +213,10 @@
}
+ protected long getSize(NodeManager manager, Node node) {
+ return node.getSize("handle");
+ }
+
/**
* Serves a node with a byte[] handle field as an attachment.
*/
@@ -262,11 +270,18 @@
l = byteArray.length;
jpegSizes.put(node.getNumber(), l);
bytes = new ByteArrayInputStream(byteArray);
+ res.setHeader("X-MMBase-IECompatibleJpeg", "This image was
filtered, because Microsoft Internet Explorer might crash otherwise");
} else {
+ int s = (int) getSize(manager, node);
+ if (s != l) {
bytes = new
IECompatibleJpegInputStream(node.getInputStreamValue("handle"));
+ res.setHeader("X-MMBase-IECompatibleJpeg", "This image was
filtered, because Microsoft Internet Explorer might crash otherwise (" + (s -
l) + " bytes thrown away)");
+ } else {
+ bytes = node.getInputStreamValue("handle");
+ }
+
}
jpegLength = l;
- res.setHeader("X-MMBase-IECompatibleJpeg", "This image was
filtered, because Microsoft Internet Explorer might crash otherwise");
} else {
bytes = node.getInputStreamValue("handle");
}
@@ -278,14 +293,11 @@
setCacheControl(res, node);
if (jpegLength == -1) {
- int size = -1;
- if (manager.hasField("size")) {
- size = node.getIntValue("size");
- } else if (manager.hasField("filesize")) {
- size = node.getIntValue("filesize");
- }
+ int size = (int) getSize(manager, node);
if (size >= 0) {
res.setContentLength(size);
+ } else {
+ log.warn("Size of handles not stored in " + manager);
}
log.debug("Serving node " + node.getNumber() + " with bytes " +
size);
} else {
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs