Vadim Gritsenko wrote:

Sylvain Wallez wrote:

Gianugo Rabellino wrote:

On Jul 6, 2004, at 12:26 PM, Sylvain Wallez wrote:

There is a solution, though: there's a different FlowIntepreter for each Processor instance (they are SingleThreaded), and so each interpreter instance could produce a unique identifier and use it as the result of getSitemapPath (which should therefore be renamed).




Any suggestions for a good unique identifier?

Thanks so much,





Since ID uniqueness doesn't have to survive JVM restart, a date-based generator like this should do the job (sorry, no time to commit it myself):




Uhm, I might be missing something here. I understood that scope should be reused (resurrected?) when inside the same sitemap: in this case, your IDGenerator would yield a different result every time, hence a new scope. Is this what is needed? If that's the case, well, fair enough. :-)




Sorry, I wasn't clear in my explanation (I was hungry and ready to run for lunch, which isn't good for clarity ;-)

JavaScriptInterpreter should have an id attribute intialized once, whose value is used instead of getSitemapPath(), e.g.
private String interpreterID = IDGenerator.getNewID();



System.identityHashCode(this) is much simpler than suggested before IDgenerator.


Mmmh... The javadoc states that uniqueness cannot be guaranteed, although most JVMs implement it by returning the object pointer. That's why using an ID generator looks safer to me.

Thinking further, we actually don't need a time-based ID (I copy/pasted this from some code I have here): a simple counter is enough to do the job.

But, it was mentioned that some component is single threaded - this means, for second (parallel) request, another component will get created, with different ID - and different scope will be obtained, breaking the flow again.


The interpreter is looked up by the sitemap engine (see FlowNode.java), so in that case SingleThreaded means a different instance for each sitemap, which handles all requests for that sitemap.

A bit hacky, but that's how it is since the origin to ensure proper isolation of flowscripts between different sitemaps.

So the unique ID attached to an interpreter instance is therefore also unique per sitemap, which is what we want to achieve here.

Sylvain

--
Sylvain Wallez                                  Anyware Technologies
http://www.apache.org/~sylvain           http://www.anyware-tech.com
{ XML, Java, Cocoon, OpenSource }*{ Training, Consulting, Projects }



Reply via email to