Beispiel #1
0
  public static View create(StaplerRequest req, StaplerResponse rsp, ViewGroup owner)
      throws FormException, IOException, ServletException {
    String requestContentType = req.getContentType();
    if (requestContentType == null) throw new Failure("No Content-Type header set");

    boolean isXmlSubmission =
        requestContentType.startsWith("application/xml")
            || requestContentType.startsWith("text/xml");

    String name = req.getParameter("name");
    checkGoodName(name);
    if (owner.getView(name) != null) throw new Failure(Messages.Hudson_ViewAlreadyExists(name));

    String mode = req.getParameter("mode");
    if (mode == null || mode.length() == 0) {
      if (isXmlSubmission) {
        View v = createViewFromXML(name, req.getInputStream());
        v.owner = owner;
        rsp.setStatus(HttpServletResponse.SC_OK);
        return v;
      } else throw new Failure(Messages.View_MissingMode());
    }

    View v;
    if (mode != null && mode.equals("copy")) {
      v = copy(req, owner, name);
    } else {
      ViewDescriptor descriptor = all().findByName(mode);
      if (descriptor == null) {
        throw new Failure("No view type ‘" + mode + "’ is known");
      }

      // create a view
      v = descriptor.newInstance(req, req.getSubmittedForm());
    }
    v.owner = owner;

    // redirect to the config screen
    rsp.sendRedirect2(req.getContextPath() + '/' + v.getUrl() + v.getPostConstructLandingPage());

    return v;
  }