Yes, Reinhard, I agree very much with the observation that everything
that influences the output must go in the cache key.
OK, I use the user group again, because I am convinced that this will be
of use to the whole cocoon community: here I go.

I write a cocoon Generator. It extends AbstractSAXGenerator and
implements CachingPipelineComponent. In order to make good use of the
caching mechanism, we use a "ParameterCacheKey", whereby we will use the
request parameters to construct the cache key. This makes sense.

Consider the methods setup() and constructCacheKey:

public void setup(Map<String, Object> parameters) {
                 request = HttpContextHelper.getRequest(parameters);
                 session = request.getSession(true); 
                 
        }
        
and

public CacheKey constructCacheKey() {
           if (request == null) {
                        System.out.println("Sapperment: request is null when
constructCacheKey is called...");
                        }
            Map<String,String> parameters = request.getParameterMap();
            ParameterCacheKey cacheKey = new ParameterCacheKey(parameters);
            return cacheKey;
            }


It is observed now that constructCachekey is called before setup is. :-(
What to do? 
Let's find a way and put it as recommended practice, for this will
affect virtually any future cocoon app.
Ideas?

Jos



> Reinhard Poetz commented on COCOON3-53:
> ---------------------------------------
> 
> The cache key has to contain everything that influences the output produced 
> by the generator.
> 
> I have no idea why HTML serialization makes a difference, but again, the logs 
> should give you some hints.
> 
> > Cocoon 3: XMLSerializer caches all
> > ----------------------------------
> >
> >                 Key: COCOON3-53
> >                 URL: https://issues.apache.org/jira/browse/COCOON3-53
> >             Project: Cocoon 3
> >          Issue Type: Bug
> >          Components: cocoon-pipeline
> >            Reporter: Jos Snellings
> >
> > After startup, any pipeline/matcher ending in an xml-serializer will
> > produce the output of the first request after server startup, regardless of 
> > the url, let alone parameters.
> > So the first xml pipe that is activated produces the expected output.
> > All subsequent calls will echo that output, whatever the url or parameters.
> > It takes a server restart to make a pipeline ending in an xml serializer 
> > work again.
> 



---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@cocoon.apache.org
For additional commands, e-mail: users-h...@cocoon.apache.org

Reply via email to