public EditClearcaseSettingsController()

in clearcase-server/src/jetbrains/buildServer/controllers/EditClearcaseSettingsController.java [36:117]


  public EditClearcaseSettingsController(@NotNull final WebControllerManager controllerManager) {
    super(controllerManager);
    
    controllerManager.registerController("/admin/clearCaseSettings.html", this);
    
    registerAction(new ControllerAction() {
      public boolean canProcess(@NotNull final HttpServletRequest request) {
        return "convertOldSettings".equals(request.getParameter("action")) && !StringUtil.isEmptyOrSpaces(request.getParameter("view-path-value"));
      }

      public void process(@NotNull HttpServletRequest request, @NotNull HttpServletResponse response, @Nullable Element ajaxResponse) {
        if (ajaxResponse == null) {
          Loggers.SERVER.debug("Error: ajaxResponse is null");
          return;
        }

        try {
          final ViewPath viewPath = ClearCaseSupport.getViewPath(request.getParameter("view-path-value"));

          final Element ccViewPath = new Element("cc-view-path");
          ccViewPath.addContent(viewPath.getClearCaseViewPath());

          final Element relPath = new Element("rel-path");
          relPath.addContent(viewPath.getRelativePathWithinTheView());

          ajaxResponse.addContent((Content) ccViewPath);
          ajaxResponse.addContent((Content) relPath);
        } catch (Exception e) {
          final Element error = new Element("error");
          error.addContent(e.getLocalizedMessage());
          ajaxResponse.addContent((Content) error);
        }
      }
    });

    registerAction(new ControllerAction() {
      public boolean canProcess(@NotNull final HttpServletRequest request) {
        return "detectBranches".equals(request.getParameter("action"));
      }

      public void process(@NotNull HttpServletRequest request, @NotNull HttpServletResponse response, @Nullable Element ajaxResponse) {
        if (ajaxResponse == null) {
          Loggers.SERVER.debug("Error: ajaxResponse is null");
          return;
        }

        try {
          final String ccViewPath = request.getParameter("cc-view-path");
          final String relPath = request.getParameter("rel-path");
          final String viewPathValue = request.getParameter("view-path-value");

          final ViewPath viewPath;
          if (!StringUtil.isEmptyOrSpaces(ccViewPath) && !StringUtil.isEmptyOrSpaces(relPath)) {
            viewPath = new ViewPath(ccViewPath, relPath);
          }
          else if (!StringUtil.isEmptyOrSpaces(viewPathValue)) {
            viewPath = ClearCaseSupport.getViewPath(viewPathValue);
          }
          else {
            throw new VcsException("view path is not specified");
          }

          final Element result = new Element("result");
          result.addContent(createContent(ClearCaseSupport.detectBranches(viewPath)));
          ajaxResponse.addContent((Content) result);
        }
        catch (final Exception e) {
          final Element error = new Element("error");
          error.addContent(e.getLocalizedMessage());
          ajaxResponse.addContent((Content) error);
        }
      }

      @NotNull
      private String createContent(@NotNull final SortedSet<String> branches) {
        if (branches.isEmpty()) {
          return "No branches detected";
        }
        return "Following branches were detected: " + StringUtil.join(branches, ", ");
      }
    });
  }