[MMBASE CVS] applications/resources/src/org/mmbase/servlet HandleServlet.java

2009-04-23 Thread Michiel Meeuwissen
Update of /var/cvs/applications/resources/src/org/mmbase/servlet
In directory james.mmbase.org:/tmp/cvs-serv3410

Modified Files:
HandleServlet.java 
Log Message:
typo


See also: 
http://cvs.mmbase.org/viewcvs/applications/resources/src/org/mmbase/servlet


Index: HandleServlet.java
===
RCS file: 
/var/cvs/applications/resources/src/org/mmbase/servlet/HandleServlet.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- HandleServlet.java  9 Dec 2008 15:59:54 -   1.4
+++ HandleServlet.java  24 Apr 2009 06:26:34 -  1.5
@@ -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.4 2008/12/09 15:59:54 michiel Exp $
+ * @version $Id: HandleServlet.java,v 1.5 2009/04/24 06:26:34 michiel Exp $
  * @author Michiel Meeuwissen
  * @since  MMBase-1.6
  * @see ImageServlet
@@ -43,6 +43,7 @@
 
 private static Cache jpegSizes = null;
 
+@Override
 protected Map getAssociations() {
 Map a = super.getAssociations();
 // Can do the following:
@@ -56,6 +57,7 @@
  * Takes care of the 'expire' init-parameter.
  * {...@inheritdoc}
  */
+@Override
 public void init() throws ServletException {
 super.init();
 log = Logging.getLoggerInstance(HandleServlet.class);
@@ -78,7 +80,7 @@
 return "JPEGSizes";
 }
 public String getDescription() {
-return "HandleServlet may ditch some bytes from 
Jpeg-steams to please IE";
+return "HandleServlet may ditch some bytes from 
Jpeg-streams to please IE";
 }
 
 };
@@ -220,7 +222,7 @@
 /**
  * Serves a node with a byte[] handle field as an attachment.
  */
-
+@Override
 public void doGet(HttpServletRequest req, HttpServletResponse res) throws 
ServletException, IOException {
 QueryParts query = readQuery(req, res);
 Node queryNode = getNode(query);
___
Cvs mailing list
Cvs@lists.mmbase.org
http://lists.mmbase.org/mailman/listinfo/cvs


[MMBASE CVS] applications/resources/src/org/mmbase/servlet HandleServlet.java

2008-12-09 Thread Michiel Meeuwissen
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 -  1.3
+++ HandleServlet.java  9 Dec 2008 15:59:54 -   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 jpegSizes = null;
 
-protected Map getAssociations() {
+protected Map 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
Cvs@lists.mmbase.org
http://lists.mmbase.org/mailman/listinfo/cvs


[MMBASE CVS] applications/resources/src/org/mmbase/servlet HandleServlet.java

2008-09-26 Thread Michiel Meeuwissen
Update of /var/cvs/applications/resources/src/org/mmbase/servlet
In directory james.mmbase.org:/tmp/cvs-serv25560

Modified Files:
HandleServlet.java 
Log Message:
  MMB-1415. Making sure length is always served


See also: 
http://cvs.mmbase.org/viewcvs/applications/resources/src/org/mmbase/servlet
See also: http://www.mmbase.org/jira/browse/MMB-1415


Index: HandleServlet.java
===
RCS file: 
/var/cvs/applications/resources/src/org/mmbase/servlet/HandleServlet.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- HandleServlet.java  3 Sep 2008 17:18:05 -   1.2
+++ HandleServlet.java  26 Sep 2008 10:12:26 -  1.3
@@ -17,6 +17,7 @@
 import javax.servlet.http.*;
 
 import org.mmbase.bridge.*;
+import org.mmbase.cache.Cache;
 
 import org.mmbase.util.*;
 import org.mmbase.util.logging.*;
@@ -27,7 +28,7 @@
  * specialized servlets. The mime-type is always application/x-binary, forcing 
the browser to
  * download.
  *
- * @version $Id: HandleServlet.java,v 1.2 2008/09/03 17:18:05 michiel Exp $
+ * @version $Id: HandleServlet.java,v 1.3 2008/09/26 10:12:26 michiel Exp $
  * @author Michiel Meeuwissen
  * @since  MMBase-1.6
  * @see ImageServlet
@@ -40,6 +41,8 @@
 
 private boolean isIECompatibleJpeg = true;
 
+private static Cache jpegSizes = null;
+
 protected Map getAssociations() {
 Map a = super.getAssociations();
 // Can do the following:
@@ -69,6 +72,18 @@
 if (ieCompat != null) {
 isIECompatibleJpeg = Boolean.valueOf(ieCompat).booleanValue();
 }
+if (isIECompatibleJpeg && jpegSizes == null) {
+jpegSizes = new Cache(5000) {
+public String getName() {
+return "JPEGSizes";
+}
+public String getDescription() {
+return "HandleServlet may ditch some bytes from 
Jpeg-steams to please IE";
+}
+
+};
+jpegSizes.putCache();
+}
 }
 
 // just to get HandleServlet in the stacktrace.
@@ -228,8 +243,6 @@
 if (node.isNull("handle")) {
 return;
 }
-InputStream bytes = node.getInputStreamValue("handle");
-
 
 //remove additional information left by PhotoShop 7 in jpegs
 //this information may crash Internet Exploder. that's why you need to 
remove it.
@@ -239,14 +252,23 @@
 //However they break many applications, including Quark and, 
significantly,
 //various versions of Internet Explorer on various platforms.
 
-boolean canSendLength = true;
+int jpegLength = -1;
 
-if (isIECompatibleJpeg) {
-   if (mimeType.equals("image/jpeg") || 
mimeType.equals("image/jpg")) {
-   bytes = new IECompatibleJpegInputStream(bytes);
-   canSendLength = false;
-   //res.setHeader("X-MMBase-IECompatibleJpeg", "This image was 
filtered, because Microsoft Internet Explorer might crash otherwise");
+final InputStream bytes;
+if (isIECompatibleJpeg && (mimeType.equals("image/jpeg") || 
mimeType.equals("image/jpg"))) {
+Integer l = jpegSizes.get(node.getNumber());
+if (l == null) {
+byte[] byteArray = 
IECompatibleJpegInputStream.process(node.getByteValue("handle"));
+l = byteArray.length;
+jpegSizes.put(node.getNumber(), l);
+bytes = new ByteArrayInputStream(byteArray);
+} else {
+bytes = new 
IECompatibleJpegInputStream(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");
 }
 
 if (!setContent(query, node, mimeType)) {
@@ -255,7 +277,7 @@
 setExpires(res, node);
 setCacheControl(res, node);
 
-if (canSendLength) {
+if (jpegLength == -1) {
 int size = -1;
 if (manager.hasField("size")) {
 size = node.getIntValue("size");
@@ -267,7 +289,8 @@
 }
 log.debug("Serving node " + node.getNumber() + " with bytes " + 
size);
 } else {
-log.debug("Serving node " + node.getNumber() + " with unknown 
size, because IE sucks");
+res.setContentLength(jpegLength);
+log.debug("Serving node " + node.getNumber() + " with bytes " + 
jpegLength);
 }
 sendBytes(res, bytes);
 }
___
Cvs mailing list
Cvs@lists.mmbase.org
http://lists.mmbase.org/mailman/listinfo/cvs


[MMBASE CVS] applications/resources/src/org/mmbase/servlet HandleServlet.java ImageServlet.java

2008-09-03 Thread Michiel Meeuwissen
Update of /var/cvs/applications/resources/src/org/mmbase/servlet
In directory james.mmbase.org:/tmp/cvs-serv2732

Modified Files:
HandleServlet.java ImageServlet.java 
Log Message:
MMB-1715


See also: 
http://cvs.mmbase.org/viewcvs/applications/resources/src/org/mmbase/servlet
See also: http://www.mmbase.org/jira/browse/MMB-1715


Index: HandleServlet.java
===
RCS file: 
/var/cvs/applications/resources/src/org/mmbase/servlet/HandleServlet.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- HandleServlet.java  25 Sep 2007 12:29:54 -  1.1
+++ HandleServlet.java  3 Sep 2008 17:18:05 -   1.2
@@ -27,7 +27,7 @@
  * specialized servlets. The mime-type is always application/x-binary, forcing 
the browser to
  * download.
  *
- * @version $Id: HandleServlet.java,v 1.1 2007/09/25 12:29:54 michiel Exp $
+ * @version $Id: HandleServlet.java,v 1.2 2008/09/03 17:18:05 michiel Exp $
  * @author Michiel Meeuwissen
  * @since  MMBase-1.6
  * @see ImageServlet
@@ -131,17 +131,25 @@
 }
 
 /**
- * Sets the content disposition header.
- * @return true on success
+ * @since MMBase-1.9
  */
-protected boolean setContent(QueryParts query, Node node, String mimeType) 
throws IOException {
-String disposition;
+protected String getContentDisposition(QueryParts query, Node node, String 
def) {
 String fileNamePart = query.getFileName();
 if(fileNamePart != null && fileNamePart.startsWith("/inline/")) {
-disposition = "inline";
+return "inline";
 } else {
-disposition = "attachment";
+String cd = 
node.getNodeManager().getProperty("Content-Disposition");
+return cd == null ? def : cd;
 }
+}
+
+
+/**
+ * Sets the content disposition header.
+ * @return true on success
+ */
+protected boolean setContent(QueryParts query, Node node, String mimeType) 
throws IOException {
+String disposition = getContentDisposition(query, node, "attachment");
 query.getResponse().setHeader("Content-Disposition", disposition + "; 
filename=\""  + getFileName(node, null, "mmbase-attachment")+ "\"");
 //res.setHeader("X-MMBase-1", "Not sending Content-Disposition because 
this might confuse Microsoft Internet Explorer");
 return true;


Index: ImageServlet.java
===
RCS file: 
/var/cvs/applications/resources/src/org/mmbase/servlet/ImageServlet.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- ImageServlet.java   7 Aug 2007 08:11:59 -   1.3
+++ ImageServlet.java   3 Sep 2008 17:18:05 -   1.4
@@ -29,7 +29,7 @@
  * images), which you have to create yourself before calling this servlet. The 
cache() function of
  * Images can be used for this. An URL can be gotten with cachepath().
  *
- * @version $Id: ImageServlet.java,v 1.3 2007/08/07 08:11:59 michiel Exp $
+ * @version $Id: ImageServlet.java,v 1.4 2008/09/03 17:18:05 michiel Exp $
  * @author Michiel Meeuwissen
  * @since  MMBase-1.6
  * @seeorg.mmbase.module.builders.AbstractImages
@@ -101,8 +101,8 @@
 } else { // 'images', but as you see this is not explicit, so you can 
also name your image builder otherwise.
 originalNode = node;
 }
-
-query.getResponse().setHeader("Content-Disposition", "inline; 
filename=\"" + getFileName(node, originalNode, "mmbase-image")+ "\"");
+String disposition = getContentDisposition(query, node, "inline");
+query.getResponse().setHeader("Content-Disposition", disposition + "; 
filename=\"" + getFileName(node, originalNode, "mmbase-image")+ "\"");
 return true;
 }
 
___
Cvs mailing list
Cvs@lists.mmbase.org
http://lists.mmbase.org/mailman/listinfo/cvs