On 27 Jun 2003 at 12:09, Unico Hommes wrote:
> > > That's what I want too! But it does not require that the
> > actual runner
> > > be implemented as a sitemap component or executed as part of a
> > > pipeline. PublishServiceStatusGenerator can still access the
> > > PublishService as a component from the ServiceManager.
> >
> > I agree. Have a sitemap component that calls a publishService
> > that runs in the background.
>
> OK, I do see your point. It still feels like a feedback loop.
Maybe we need to make sure that the Bean's Cocoon can't run the publishing
service! :-)
> > > > > Great! We could eventually also supply a way to delete remote
> > > > > resources when they no longer exist locally.
> > > >
> > > > Should be possible. If you have some understanding of the Cocoon
> > > > Cache, you can probably help me get it to work.
> > >
> > > I was thinking more in the direction of keeping all the
> > generated link
> > > views during run A and comparing it during run B to the
> > current ones.
> > > That way non-caching pipelines work too.
> >
> > My 'only generate changed content' code uses the
> > 'last-modified-since' functionality recently added to the
> > HTTPEnvironment. You need to store locally the timestamps of
> > files when you generate them, and the links that are held
> > within the page (so that you can follow them when the page
> > doesn't need generating).
>
> If the remote files are read-only, then you could also check the
> last-modified of the remote file. But probably your solution is faster
> because it doesn't require an additional network call.
That's the point - avoid network traffic.
> > The code is all there, but for some
> > reason Cocoon isn't calling my setResponseNotModified(),
> > which it should, and I haven't had time to check out why. As
> > to deleting, you can just check if a file is in your store
> > that wasn't spidered this time, and thus delete it.
I'll get looking into this again soon (next) - but would appreciate guidance when it
comes to working with Cocoon's caching.
> > > > Oh, I'm in the process of reworking Main.java and the
> > bean to add a
> > > > BeanListener interface. That means that the bean does not do any
> > > > outputting to System.out. It just calls methods on the Listener
> > > > interface - the bean caller needs to register a listener with
> > > > the bean. I've moved the broken link reporting into Main, so
> > > > that the bean simply reports a broken link, leaving it to the
> > > > user
> > to decide
> > > > exactly what should happen when a broken link is found.
> > Here's the
> > > > interface as it is at the moment:
> > > >
> > > > public interface BeanListener {
> > > > public void pageGenerated(String uri, int linksInPage, int
> > > > pagesRemaining);
> > > > public void messageGenerated(String msg);
> > > > public void warningGenerated(String uri, String warning);
> > > > public void brokenLinkFound(String uri, String message); }
> > >
> > > Ah good, this also works towards making CocoonBean thread
> > safe. I like
> > > it.
> >
> > I'm glad. It doesn't yet work, but I'll commit it when it does.
It is now committed. Do take a look (and let me know of any problems).
Regards, Upayavira