01: package fitnesse.responders;
02:
03: import fitnesse.wiki.*;
04: import fitnesse.*;
05: import fitnesse.http.*;
06:
07: public class ImportAndViewResponder implements Responder,
08: WikiImporterClient {
09: private WikiPage page;
10:
11: public Response makeResponse(FitNesseContext context,
12: Request request) throws Exception {
13: String resource = request.getResource();
14:
15: if ("".equals(resource))
16: resource = "FrontPage";
17:
18: loadPage(resource, context);
19: if (page == null)
20: return new NotFoundResponder().makeResponse(context,
21: request);
22: loadPageData();
23:
24: SimpleResponse response = new SimpleResponse();
25: response.redirect(resource);
26:
27: return response;
28: }
29:
30: protected void loadPage(String resource, FitNesseContext context)
31: throws Exception {
32: WikiPagePath path = PathParser.parse(resource);
33: PageCrawler crawler = context.root.getPageCrawler();
34: crawler.setDeadEndStrategy(new VirtualEnabledPageCrawler());
35: page = crawler.getPage(context.root, path);
36: }
37:
38: protected void loadPageData() throws Exception {
39: PageData pageData = page.getData();
40:
41: WikiImportProperty importProperty = WikiImportProperty
42: .createFrom(pageData.getProperties());
43:
44: if (importProperty != null) {
45: WikiImporter importer = new WikiImporter();
46: importer.setWikiImporterClient(this );
47: importer.parseUrl(importProperty.getSourceUrl());
48: importer.importRemotePageContent(page);
49: }
50: }
51:
52: public void pageImported(WikiPage localPage) throws Exception {
53: }
54:
55: public void pageImportError(WikiPage localPage, Exception e)
56: throws Exception {
57: e.printStackTrace();
58: }
59: }
|