/**
   * {@inheritDoc} Adds the service to the ServiceRegistry via the ServiceRegistryManager.
   *
   * @see
   *     org.springframework.web.servlet.mvc.SimpleFormController#onSubmit(javax.servlet.http.HttpServletRequest,
   *     javax.servlet.http.HttpServletResponse, java.lang.Object,
   *     org.springframework.validation.BindException)
   */
  @Override
  protected ModelAndView onSubmit(
      final HttpServletRequest request,
      final HttpServletResponse response,
      final Object command,
      final BindException errors)
      throws Exception {
    RegisteredService service = (RegisteredService) command;

    // only change object class if there isn't an explicit RegisteredService class set
    if (this.getCommandClass() == null) {
      // CAS-1071
      // Treat _new_ patterns starting with ^ character as a regular expression
      if (service.getId() == RegisteredService.INITIAL_IDENTIFIER_VALUE
          && service.getServiceId().startsWith("^")) {
        logger.debug("Detected regular expression starting with ^");
        final RegexRegisteredService regexService = new RegexRegisteredService();
        regexService.copyFrom(service);
        service = regexService;
      }
    }
    this.servicesManager.save(service);
    logger.info("Saved changes to service " + service.getId());

    final ModelAndView modelAndView =
        new ModelAndView(new RedirectView("manage.html#" + service.getId(), true));
    modelAndView.addObject("action", "add");
    modelAndView.addObject("id", service.getId());

    return modelAndView;
  }
  @Test
  public void verifyRegexService() {
    final RegexRegisteredService r = new RegexRegisteredService();
    r.setId(10000);
    r.setName("regex test");
    r.setServiceId("^http://www.test.edu.+");
    r.setEvaluationOrder(10000);

    this.defaultServicesManagerImpl.save(r);

    final SimpleService service = new SimpleService("HTTP://www.TEST.edu/param=hello");
    assertEquals(r, this.defaultServicesManagerImpl.findServiceBy(service));
  }