W3C home > Mailing lists > Public > xproc-dev@w3.org > November 2010

Re: Calabash: cache the compiled pipeline

From: Edwin de Jong <e.dejong@exxellence.nl>
Date: Wed, 17 Nov 2010 14:12:26 +0100
Message-ID: <4CE3D4BA.20704@exxellence.nl>
To: Florent Georges <fgeorges@fgeorges.org>
CC: XProc Dev <xproc-dev@w3.org>
Op 17-11-2010 13:57, Florent Georges schreef:
> On 17 November 2010 10:37, Edwin de Jong wrote:
>> When a request comes in, a (synchronized) flyweight object is returned,
>> possibly cached pipelines are found or a pipeline is compiled and
>> subsequently executed.
>    Interesting.  That's what I am trying to do.  But what kind of
> objects are you caching in the pool?
I chose a wrapper class, wrapping com.xmlcalabash.core.XProcRuntime, 
adding references to the cached pipelines (XPipeline objects). 
Subclassing XProcRuntime would have been an option, but I don't like 
implementation inheritance, as I try to avoid a future break when 
Calabash updates the implementation. To create new XProcRuntimes and 
configure them, I added an XProcRuntimeBuilder as a parameter to the 
pool (thus it functions as a Factory as well). Perhaps separating these 
concerns would have been called for, but time is sometimes a constraint.

So, basically, the seperation of concerns is: WebApp -> Pool 
(initialized with builder) -> XProcRuntimeWrapper -> XProcRuntime and 
(0..*) XPipeline

Then, WebApp calls pool asking for a XProcRuntimeWrapper, an XPipeline 
(possibly cached), WebApp executes pipeline in runtime.

Please note that when you create a Saxon document from the request, you 
need to wrap it with the same DocumentBuilder as is defined in the 
XProcRuntime (which makes it a bit awkward).

Met vriendelijke groet,

Edwin de Jong

Exxellence Group | www.exxellence.nl
Bezoekadres: Welbergweg 80-84 | 7556 PE Hengelo (ov.)
Postadres: Postbus 768 | 7550 AT Hengelo (ov.)
Tel. +31 (74) 25 94 008 | fax. +31 (74) 25 66 424
Received on Wednesday, 17 November 2010 13:13:11 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 21:03:07 UTC