Return-Path: Mailing-List: contact cocoon-dev-help@xml.apache.org; run by ezmlm Delivered-To: mailing list cocoon-dev@xml.apache.org Received: (qmail 34250 invoked from network); 27 Dec 2000 09:13:56 -0000 Received: from mail.ursus.ru (HELO ursus.ru) (195.96.66.197) by h29.sny.collab.net with SMTP; 27 Dec 2000 09:13:56 -0000 Received: from [195.42.70.4] (HELO anthony) by ursus.ru (Stalker SMTP Server 1.7) with SMTP id S.0000185083 for ; Wed, 27 Dec 2000 12:13:03 +0400 From: "Tagunov Anthony" To: "cocoon-dev@xml.apache.org" Date: Wed, 27 Dec 2000 12:16:30 +0300 Reply-To: "Tagunov Anthony" Priority: Normal X-Mailer: PMMail 2000 Professional (2.10.2010) For Windows NT (4.0.1381;6) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="_=_=_=IMA.BOUNDARY.G67Z3I138764=_=_=_" Subject: [C1][General][Patches] Implement monitor cleaning Message-Id: X-Spam-Rating: h29.sny.collab.net 1.6.2 0/1000/N --_=_=_=IMA.BOUNDARY.G67Z3I138764=_=_=_ Content-Type: text/plain; charset="koi8-r" Content-Transfer-Encoding: 7bit SORRY! I'VE SENT ONE DIFF WRONG IN THE PREV E-MAIL, so, plz look at diffs in this letter instead! Hello, evrybody! Looks like you've all been on holidays, guys, haven't you ;) Please excuse my boldness, but let me propose the following mechanism for Cocoon 1. This mechanism should solve a problem I can see no non-radical way to solve: our monitors (in processors) generally never get cleaned. One solution is to clean the monitor in the beginning of the process() method, but what if the same processor (xslt, xinclude) get invoked twice (3 times..) per request? For this solution we're likely to loose information about the request's dependencies. This is what I propose: let us implement some new interface (I called it Invalidatable) and make the processors implement it (an alternative is to add one method to Changeble interface). Then whenever the page gets cleaned from cache (or when processing traps) or when the page has been processed and the result has been found to be !isCacheable()) we walk through the page's changebles and if they implement the Invalidatable interface we call their method to clean out their monitors for the given request. Your opinion? Best regards, Tagunov Anthony NNT Telecom Russia --_=_=_=IMA.BOUNDARY.G67Z3I138764=_=_=_ Content-Type: application/octet-stream; name="Invalidatable.java" Content-Transfer-Encoding: base64 cGFja2FnZSBvcmcuYXBhY2hlLmNvY29vbi5mcmFtZXdvcms7DQoNCnB1YmxpYyBpbnRlcmZhY2Ug SW52YWxpZGF0YWJsZSB7DQogICAgICAgIHZvaWQgaW52YWxpZGF0ZShPYmplY3QgY29udGV4dCk7 DQp9 --_=_=_=IMA.BOUNDARY.G67Z3I138764=_=_=_ Content-Type: application/octet-stream; name="CocoonCache.diff" Content-Transfer-Encoding: base64 SW5kZXg6IHhtbC1jb2Nvb24vc3JjL29yZy9hcGFjaGUvY29jb29uL2NhY2hlL0NvY29vbkNhY2hl LmphdmEKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2hvbWUvY3ZzcHVibGljL3htbC1jb2Nvb24vc3Jj L29yZy9hcGFjaGUvY29jb29uL2NhY2hlL0NvY29vbkNhY2hlLmphdmEsdgpyZXRyaWV2aW5nIHJl dmlzaW9uIDEuOQpkaWZmIC1yMS45IENvY29vbkNhY2hlLmphdmEKOTBjOTAsOTMKPCAgICAgICAg IGlmIChjaGFuZ2VkKSBzdG9yZS5yZW1vdmUgKGVuY29kZWQpOwotLS0KPiAgICAgICAgIGlmIChj aGFuZ2VkKSB7Cj4gICAgICAgICAgICAgICBwYWdlLmludmFsaWRhdGUocmVxdWVzdCk7Cj4gICAg ICAgICAgICAgICBzdG9yZS5yZW1vdmUgKGVuY29kZWQpOwo+ICAgICAgICAgfQoxMTIsMTE0YzEx NSwxMjEKPCAgICAgICAgIGlmICghcGFnZS5pc0NhY2hlZCgpICYmIHBhZ2UuaXNDYWNoZWFibGUg KHJlcXVlc3QpKSB7CjwgICAgICAgICAgICAgcGFnZS5zZXRDYWNoZWQodHJ1ZSk7CjwgICAgICAg ICAgICAgdGhpcy5zdG9yZS5ob2xkKFV0aWxzLmVuY29kZShyZXF1ZXN0KSwgcGFnZSk7Ci0tLQo+ ICAgICAgICAgaWYgKCFwYWdlLmlzQ2FjaGVkKCkpewo+ICAgICAgICAgICAgIGlmIChwYWdlLmlz Q2FjaGVhYmxlIChyZXF1ZXN0KSkgewo+ICAgICAgICAgICAgICAgICBwYWdlLnNldENhY2hlZCh0 cnVlKTsKPiAgICAgICAgICAgICAgICAgdGhpcy5zdG9yZS5ob2xkKFV0aWxzLmVuY29kZShyZXF1 ZXN0KSwgcGFnZSk7Cj4gICAgICAgICAgICAgfWVsc2V7Cj4gICAgICAgICAgICAgICAgIHBhZ2Uu aW52YWxpZGF0ZShyZXF1ZXN0KTsKPiAgICAgICAgICAgICB9Cg== --_=_=_=IMA.BOUNDARY.G67Z3I138764=_=_=_ Content-Type: application/octet-stream; name="Engine.diff" Content-Transfer-Encoding: base64 SW5kZXg6IHhtbC1jb2Nvb24vc3JjL29yZy9hcGFjaGUvY29jb29uL0VuZ2luZS5qYXZhCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KUkNTIGZpbGU6IC9ob21lL2N2c3B1YmxpYy94bWwtY29jb29uL3NyYy9vcmcvYXBhY2hl L2NvY29vbi9FbmdpbmUuamF2YSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40NApkaWZmIC1yMS40 NCBFbmdpbmUuamF2YQo0MTJhNDEzCj4gICAgICAgICAgICAgICAgICAgICAgICAgcGFnZS5pbnZh bGlkYXRlKCk7CjQxM2E0MTUsNDE3Cj4gICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChFeGNl cHRpb24gZSkgewo+ICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2UuaW52YWxpZGF0ZSgpOwo+ ICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IGU7Cg== --_=_=_=IMA.BOUNDARY.G67Z3I138764=_=_=_ Content-Type: application/octet-stream; name="Page.diff" Content-Transfer-Encoding: base64 SW5kZXg6IHhtbC1jb2Nvb24vc3JjL29yZy9hcGFjaGUvY29jb29uL2ZyYW1ld29yay9QYWdlLmph dmEKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2hvbWUvY3ZzcHVibGljL3htbC1jb2Nvb24vc3JjL29y Zy9hcGFjaGUvY29jb29uL2ZyYW1ld29yay9QYWdlLmphdmEsdgpyZXRyaWV2aW5nIHJldmlzaW9u IDEuNgpkaWZmIC1yMS42IFBhZ2UuamF2YQoxNDFhMTQyLDE1MQo+IAo+ICAgICBwdWJsaWMgdm9p ZCBpbnZhbGlkYXRlKE9iamVjdCByZXF1ZXN0KSB7Cj4gICAgICAgICBFbnVtZXJhdGlvbiBlbj1j aGFuZ2VhYmxlcy5lbGVtZW50cygpOwo+ICAgICAgICAgd2hpbGUoZW4uaGFzTW9yZUVsZW1lbnRz KCkpIHsKPiAgICAgICAgICAgICBPYmplY3QgYz1lbi5uZXh0RWxlbWVudCgpOwo+ICAgICAgICAg ICAgIGlmKGMgaW5zdGFuY2VvZiBJbnZhbGlkYXRhYmxlKSB7Cj4gICAgICAgICAgICAgICAgICAo KEludmFsaWRhdGFibGUpYykuaW52YWxpZGF0ZShyZXF1ZXN0KTsKPiAgICAgICAgICAgICB9Cj4g ICAgICAgICB9Cj4gICAgfQo= --_=_=_=IMA.BOUNDARY.G67Z3I138764=_=_=_ Content-Type: application/octet-stream; name="XIncludeProcessor.diff" Content-Transfer-Encoding: base64 SW5kZXg6IHhtbC1jb2Nvb24vc3JjL29yZy9hcGFjaGUvY29jb29uL3Byb2Nlc3Nvci94aW5jbHVk ZS9YSW5jbHVkZVByb2Nlc3Nvci5qYXZhCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9ob21lL2N2c3B1 YmxpYy94bWwtY29jb29uL3NyYy9vcmcvYXBhY2hlL2NvY29vbi9wcm9jZXNzb3IveGluY2x1ZGUv WEluY2x1ZGVQcm9jZXNzb3IuamF2YSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xOQpkaWZmIC1y MS4xOSBYSW5jbHVkZVByb2Nlc3Nvci5qYXZhCjgzYTg0Cj4gaW1wb3J0IG9yZy5hcGFjaGUuY29j b29uLmZyYW1ld29yay5JbnZhbGlkYXRhYmxlOwoxMDdjMTA4CjwgcHVibGljIGNsYXNzIFhJbmNs dWRlUHJvY2Vzc29yIGV4dGVuZHMgQWJzdHJhY3RBY3RvciBpbXBsZW1lbnRzIFByb2Nlc3Nvciwg U3RhdHVzLCBDYWNoZWFibGUgewotLS0KPiBwdWJsaWMgY2xhc3MgWEluY2x1ZGVQcm9jZXNzb3Ig ZXh0ZW5kcyBBYnN0cmFjdEFjdG9yIGltcGxlbWVudHMgUHJvY2Vzc29yLCBTdGF0dXMsIENhY2hl YWJsZSwgSW52YWxpZGF0YWJsZSB7CjE1NWExNTcsMTYzCj4gICAgICAgcHVibGljIHZvaWQgaW52 YWxpZGF0ZShPYmplY3Qgb2JqZWN0KSB7Cj4gICAgICAgICAgICAgICBPYmplY3Qga2V5ID0gVXRp bHMuZW5jb2RlKChIdHRwU2VydmxldFJlcXVlc3Qpb2JqZWN0KTsKPiAgICAgICAgICAgICAgIGlm KG1vbml0b3JlZF90YWJsZS5jb250YWluc0tleShrZXkpKSB7Cj4gICAgICAgICAgICAgICAgICAg ICAgIG1vbml0b3JlZF90YWJsZS5yZW1vdmUoa2V5KTsKPiAgICAgICAgICAgICAgICAgICAgICAg bW9uaXRvci5pbnZhbGlkYXRlKGtleSk7Cj4gICAgICAgICAgICAgICB9Cj4gICAgICAgfQo= --_=_=_=IMA.BOUNDARY.G67Z3I138764=_=_=_ Content-Type: application/octet-stream; name="XSLTProcessor.diff" Content-Transfer-Encoding: base64 SW5kZXg6IHhtbC1jb2Nvb24vc3JjL29yZy9hcGFjaGUvY29jb29uL3Byb2Nlc3Nvci94c2x0L1hT TFRQcm9jZXNzb3IuamF2YQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvaG9tZS9jdnNwdWJsaWMveG1s LWNvY29vbi9zcmMvb3JnL2FwYWNoZS9jb2Nvb24vcHJvY2Vzc29yL3hzbHQvWFNMVFByb2Nlc3Nv ci5qYXZhLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjI1CmRpZmYgLXIxLjI1IFhTTFRQcm9jZXNz b3IuamF2YQo4MWM4MQo8IHB1YmxpYyBjbGFzcyBYU0xUUHJvY2Vzc29yIGltcGxlbWVudHMgQWN0 b3IsIFByb2Nlc3NvciwgU3RhdHVzLCBEZWZhdWx0cywgQ2FjaGVhYmxlIHsKLS0tCj4gcHVibGlj IGNsYXNzIFhTTFRQcm9jZXNzb3IgaW1wbGVtZW50cyBBY3RvciwgUHJvY2Vzc29yLCBTdGF0dXMs IERlZmF1bHRzLCBDYWNoZWFibGUsIEludmFsaWRhdGFibGUgewoyNTVhMjU2Cj4gICAgICAgICAg ICAgICAgIC8vIHJlcXVlc3RNb25pdG9yLmludmFsaWRhdGUoZW5jUmVxKTsKMjc4YTI4MCwyODQK PiAKPiAgICAgICAgcHVibGljIHZvaWQgaW52YWxpZGF0ZShPYmplY3Qgb2JqZWN0KSB7Cj4gICAg ICAgICAgICAgICAgIE9iamVjdCBrZXkgPSBVdGlscy5lbmNvZGUoKEh0dHBTZXJ2bGV0UmVxdWVz dClvYmplY3QpOwo+ICAgICAgICAgICAgICAgICByZXF1ZXN0TW9uaXRvci5pbnZhbGlkYXRlKGtl eSk7Cj4gICAgICAgIH0K --_=_=_=IMA.BOUNDARY.G67Z3I138764=_=_=_--