cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ard Schrijvers" <a.schrijv...@hippo.nl>
Subject RE: Moving reduced version of CachingSource to core | Configuration issues
Date Tue, 27 Mar 2007 11:15:19 GMT

> 
> This if statement checks if a parameter starts with 
> "cocoon:cache" and if yes, 
> it add it to the params object and removes it from the 
> "normal" request 
> parameters. It looks fine for me and the expires value is set 
> correctly at the 
> source AFAICS. BTW, I'm working on trunk.

Yes I saw this about the cocoon:cache, but it seems to me that the other parameters are forgotten
to add to params, and therefor, int expires = params.getParameterAsInteger(CachingSource.CACHE_EXPIRES_PARAM,
defaultExpires); always returns a -1...Look at the code snipper below from the getSource in
the trunk:

index = uri.indexOf('?');
        if (index != -1) {
            sp = new SourceParameters(uri.substring(index + 1));
            uri = uri.substring(0, index);
        }

        // put caching source specific query string parameters
        // into a Parameters object
        final Parameters params = new Parameters();
        if (sp != null) {
            SourceParameters remainingParameters = (SourceParameters) sp.clone();
            final Iterator names = sp.getParameterNames();
            while (names.hasNext()) {
                String name = (String) names.next();
                if (name.startsWith("cocoon:cache")) {
                    params.setParameter(name.substring("cocoon:".length()), sp.getParameter(name));
                    remainingParameters.removeParameter(name);
                }
            }
            String queryString = remainingParameters.getEncodedQueryString();
            if (queryString != null) {
                uri += "?" + queryString;
            }
        }

        int expires = params.getParameterAsInteger(CachingSource.CACHE_EXPIRES_PARAM, defaultExpires);
     
The only parameter that is added to params is the cocoon:cache, and therefor expires always
has the defaultExpires.

if (name.startsWith("cocoon:cache")) {
                    params.setParameter(name.substring("cocoon:".length()), sp.getParameter(name));
                    remainingParameters.removeParameter(name);
                }
else{
params.setParameter(name,sp.getParameter(name));
}

solves this IMO

Ard
  

> 
> 
> > because all parameters are neglected in the current way. 
> > 
> > Then, when I do have my expires accounted for correctly, I 
> do not understand why while the cached object is not expired, 
> there is still a call for the remote source. This doesn't 
> make sense to me. Also, when the expires is set correctly, 
> and the object is expired, I am getting a 
> NullPointerException, but it might be because we use an old 
> version...?
> 
> I can confirm this but don't know where those requests come 
> from. I could be 
> caused by a validity check but that's only a wild guess.
> 
> -- 
> Reinhard Pötz           Independent Consultant, Trainer & (IT)-Coach 
> 
> {Software Engineering, Open Source, Web Applications, Apache Cocoon}
> 
>                                         web(log): http://www.poetz.cc
> --------------------------------------------------------------------
> 

Mime
View raw message