From 24dece80bb2e56a8705643d430e0e57111a02f54 Mon Sep 17 00:00:00 2001 From: hns Date: Mon, 28 Oct 2002 21:34:49 +0000 Subject: [PATCH] implemented dependsOn() and digestDependencies() methods --- src/helma/framework/ResponseBean.java | 8 ++++++ src/helma/framework/ResponseTrans.java | 37 ++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) diff --git a/src/helma/framework/ResponseBean.java b/src/helma/framework/ResponseBean.java index 96a1ffb5..ba5a5336 100644 --- a/src/helma/framework/ResponseBean.java +++ b/src/helma/framework/ResponseBean.java @@ -160,6 +160,14 @@ public class ResponseBean implements Serializable { res.setETag (etag); } + public void dependsOn (Object what) { + res.dependsOn (what); + } + + public void digestDependencies () { + res.digestDependencies (); + } + /* public void notModified () throws RedirectException { res.setNotModified (true); } */ diff --git a/src/helma/framework/ResponseTrans.java b/src/helma/framework/ResponseTrans.java index 4f7f5209..d8df4142 100644 --- a/src/helma/framework/ResponseTrans.java +++ b/src/helma/framework/ResponseTrans.java @@ -8,6 +8,7 @@ import java.util.*; import helma.framework.core.Skin; import helma.objectmodel.*; import helma.util.*; +import java.security.*; /** * A Transmitter for a response to the servlet client. Objects of this @@ -95,6 +96,7 @@ public final class ResponseTrans implements Externalizable { // the request trans for this response private transient RequestTrans reqtrans; + private transient MessageDigest digest; public ResponseTrans () { super (); @@ -141,6 +143,9 @@ public final class ResponseTrans implements Externalizable { values.clear (); lastModified = -1; notModified = false; + etag = null; + if (digest != null) + digest.reset(); } @@ -410,6 +415,38 @@ public final class ResponseTrans implements Externalizable { return notModified; } + public void dependsOn (Object what) { + if (digest == null) try { + digest = MessageDigest.getInstance ("MD5"); + } catch (NoSuchAlgorithmException nsa) { + // MD5 should always be available + } + if (what == null) { + digest.update (new byte[0]); + } else if (what instanceof byte[]) { + digest.update ((byte[]) what); + } else { + String str = what.toString(); + if (str != null) + digest.update (str.getBytes ()); + else + digest.update (new byte[0]); + } + } + + public void digestDependencies () { + if (digest == null) + return; + byte[] b = digest.digest(); + /* StringBuffer buf = new StringBuffer(b.length*2); + for ( int i=0; i