SymbolicLinkResponder.java :  » Testing » StoryTestIQ » fitnesse » responders » editing » Java Open Source

Java Open Source » Testing » StoryTestIQ 
StoryTestIQ » fitnesse » responders » editing » SymbolicLinkResponder.java
// Copyright (C) 2003,2004,2005 by Object Mentor, Inc. All rights reserved.
// Released under the terms of the GNU General Public License version 2 or later.
package fitnesse.responders.editing;

import fitnesse.*;
import fitnesse.responders.*;
import fitnesse.wiki.*;
import fitnesse.http.*;

public class SymbolicLinkResponder implements Responder {
  private Response response;

  private String resource;

  private PageCrawler crawler;

  private FitNesseContext context;

  public Response makeResponse(FitNesseContext context, Request request) throws Exception {
    resource = request.getResource();
    this.context = context;
    crawler = context.root.getPageCrawler();
    WikiPage page = crawler.getPage(context.root, PathParser.parse(resource));
    if (page == null)
      return new NotFoundResponder().makeResponse(context, request);

    response = new SimpleResponse();
    if (request.hasInput("removal"))
      removeSymbolicLink(request, page);
    else
      addSymbolicLink(request, page);

    return response;
  }

  private void setRedirect(String resource) {
    response.redirect(resource + "?properties");
  }

  private void removeSymbolicLink(Request request, WikiPage page) throws Exception {
    String linkToRemove = (String) request.getInput("removal");

    PageData data = page.getData();
    data.getProperties().removeSymbolicLink(linkToRemove);
    page.commit(data);
    setRedirect(resource);
  }

  private void addSymbolicLink(Request request, WikiPage page) throws Exception {
    String linkName = (String) request.getInput("linkName");
    String linkPath = (String) request.getInput("linkPath");

    if (!crawler.pageExists(context.root, PathParser.parse(linkPath))) {
      response = new ErrorResponder("The page to which you are attemting to link, " + linkPath
          + ", doesn't exist.").makeResponse(context, null);
      response.setStatus(404);
    } else if (page.hasChildPage(linkName)) {
      response = new ErrorResponder(resource + " already has a child named " + linkName + ".")
          .makeResponse(context, null);
      response.setStatus(412);
    } else {
      PageData data = page.getData();
      data.getProperties().addSymbolicLink(linkName, PathParser.parse(linkPath));
      page.commit(data);
      setRedirect(resource);
    }
  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.