src/main/java/de/uapcore/lightpit/modules/ProjectsModule.java

changeset 157
1e6f16fad3a5
parent 152
7761c37c5e61
child 158
4f912cd42876
     1.1 --- a/src/main/java/de/uapcore/lightpit/modules/ProjectsModule.java	Sat Oct 31 10:54:20 2020 +0100
     1.2 +++ b/src/main/java/de/uapcore/lightpit/modules/ProjectsModule.java	Thu Nov 05 13:37:48 2020 +0100
     1.3 @@ -38,6 +38,7 @@
     1.4  import org.slf4j.Logger;
     1.5  import org.slf4j.LoggerFactory;
     1.6  
     1.7 +import javax.servlet.ServletException;
     1.8  import javax.servlet.annotation.WebServlet;
     1.9  import javax.servlet.http.HttpServletRequest;
    1.10  import javax.servlet.http.HttpServletResponse;
    1.11 @@ -115,16 +116,16 @@
    1.12          }
    1.13      }
    1.14  
    1.15 -    private ResponseType forwardView(HttpServletRequest req, ProjectView viewModel, String name) {
    1.16 +    private void forwardView(HttpServletRequest req, HttpServletResponse resp, ProjectView viewModel, String name) throws ServletException, IOException {
    1.17          setViewModel(req, viewModel);
    1.18          setContentPage(req, name);
    1.19          setStylesheet(req, "projects");
    1.20          setNavigationMenu(req, "project-navmenu");
    1.21 -        return ResponseType.HTML;
    1.22 +        renderSite(req, resp);
    1.23      }
    1.24  
    1.25      @RequestMapping(method = HttpMethod.GET)
    1.26 -    public ResponseType index(HttpServletRequest req, DataAccessObjects dao) throws SQLException {
    1.27 +    public void index(HttpServletRequest req, HttpServletResponse resp, DataAccessObjects dao) throws SQLException, ServletException, IOException {
    1.28          final var viewModel = new ProjectView();
    1.29          populate(viewModel, null, dao);
    1.30  
    1.31 @@ -136,7 +137,7 @@
    1.32              info.setIssueSummary(projectDao.getIssueSummary(info.getProject()));
    1.33          }
    1.34  
    1.35 -        return forwardView(req, viewModel, "projects");
    1.36 +        forwardView(req, resp, viewModel, "projects");
    1.37      }
    1.38  
    1.39      private void configureProjectEditor(ProjectEditView viewModel, Project project, DataAccessObjects dao) throws SQLException {
    1.40 @@ -145,29 +146,29 @@
    1.41      }
    1.42  
    1.43      @RequestMapping(requestPath = "$project/edit", method = HttpMethod.GET)
    1.44 -    public ResponseType edit(HttpServletRequest req, HttpServletResponse resp, PathParameters pathParams, DataAccessObjects dao) throws IOException, SQLException {
    1.45 +    public void edit(HttpServletRequest req, HttpServletResponse resp, PathParameters pathParams, DataAccessObjects dao) throws IOException, SQLException, ServletException {
    1.46          final var viewModel = new ProjectEditView();
    1.47          populate(viewModel, pathParams, dao);
    1.48  
    1.49          if (!viewModel.isProjectInfoPresent()) {
    1.50              resp.sendError(HttpServletResponse.SC_NOT_FOUND);
    1.51 -            return ResponseType.NONE;
    1.52 +            return;
    1.53          }
    1.54  
    1.55          configureProjectEditor(viewModel, viewModel.getProjectInfo().getProject(), dao);
    1.56 -        return forwardView(req, viewModel, "project-form");
    1.57 +        forwardView(req, resp, viewModel, "project-form");
    1.58      }
    1.59  
    1.60      @RequestMapping(requestPath = "create", method = HttpMethod.GET)
    1.61 -    public ResponseType create(HttpServletRequest req, DataAccessObjects dao) throws SQLException {
    1.62 +    public void create(HttpServletRequest req, HttpServletResponse resp, DataAccessObjects dao) throws SQLException, ServletException, IOException {
    1.63          final var viewModel = new ProjectEditView();
    1.64          populate(viewModel, null, dao);
    1.65          configureProjectEditor(viewModel, new Project(-1), dao);
    1.66 -        return forwardView(req, viewModel, "project-form");
    1.67 +        forwardView(req, resp, viewModel, "project-form");
    1.68      }
    1.69  
    1.70      @RequestMapping(requestPath = "commit", method = HttpMethod.POST)
    1.71 -    public ResponseType commit(HttpServletRequest req, HttpServletResponse resp, DataAccessObjects dao) throws IOException {
    1.72 +    public void commit(HttpServletRequest req, HttpServletResponse resp, DataAccessObjects dao) throws IOException, ServletException {
    1.73  
    1.74          try {
    1.75              final var project = new Project(getParameter(req, Integer.class, "pid").orElseThrow());
    1.76 @@ -188,22 +189,21 @@
    1.77              setContentPage(req, Constants.JSP_COMMIT_SUCCESSFUL);
    1.78              LOG.debug("Successfully updated project {}", project.getName());
    1.79  
    1.80 -            return ResponseType.HTML;
    1.81 +            renderSite(req, resp);
    1.82          } catch (NoSuchElementException | IllegalArgumentException | SQLException ex) {
    1.83              resp.sendError(HttpServletResponse.SC_NOT_IMPLEMENTED);
    1.84              // TODO: implement - fix issue #21
    1.85 -            return ResponseType.NONE;
    1.86          }
    1.87      }
    1.88  
    1.89      @RequestMapping(requestPath = "$project/$component/$version/issues/", method = HttpMethod.GET)
    1.90 -    public ResponseType issues(HttpServletRequest req, HttpServletResponse resp, PathParameters pathParams, DataAccessObjects dao) throws SQLException, IOException {
    1.91 +    public void issues(HttpServletRequest req, HttpServletResponse resp, PathParameters pathParams, DataAccessObjects dao) throws SQLException, IOException, ServletException {
    1.92          final var viewModel = new ProjectDetailsView();
    1.93          populate(viewModel, pathParams, dao);
    1.94  
    1.95          if (!viewModel.isEveryFilterValid()) {
    1.96              resp.sendError(HttpServletResponse.SC_NOT_FOUND);
    1.97 -            return ResponseType.NONE;
    1.98 +            return;
    1.99          }
   1.100  
   1.101          final var project = viewModel.getProjectInfo().getProject();
   1.102 @@ -251,18 +251,18 @@
   1.103          if (version.getId() > 0)
   1.104              viewModel.getProjectDetails().updateVersionInfo(version);
   1.105  
   1.106 -        return forwardView(req, viewModel, "project-details");
   1.107 +        forwardView(req, resp, viewModel, "project-details");
   1.108      }
   1.109  
   1.110      @RequestMapping(requestPath = "$project/versions/", method = HttpMethod.GET)
   1.111 -    public ResponseType versions(HttpServletRequest req, HttpServletResponse resp, PathParameters pathParameters, DataAccessObjects dao) throws IOException, SQLException {
   1.112 +    public void versions(HttpServletRequest req, HttpServletResponse resp, PathParameters pathParameters, DataAccessObjects dao) throws IOException, SQLException, ServletException {
   1.113          final var viewModel = new VersionsView();
   1.114          populate(viewModel, pathParameters, dao);
   1.115  
   1.116          final var projectInfo = viewModel.getProjectInfo();
   1.117          if (projectInfo == null) {
   1.118              resp.sendError(HttpServletResponse.SC_NOT_FOUND);
   1.119 -            return ResponseType.NONE;
   1.120 +            return;
   1.121          }
   1.122  
   1.123          final var issueDao = dao.getIssueDao();
   1.124 @@ -270,48 +270,48 @@
   1.125          for (var issue : issues) issueDao.joinVersionInformation(issue);
   1.126          viewModel.update(projectInfo.getVersions(), issues);
   1.127  
   1.128 -        return forwardView(req, viewModel, "versions");
   1.129 +        forwardView(req, resp, viewModel, "versions");
   1.130      }
   1.131  
   1.132      @RequestMapping(requestPath = "$project/versions/$version/edit", method = HttpMethod.GET)
   1.133 -    public ResponseType editVersion(HttpServletRequest req, HttpServletResponse resp, PathParameters pathParameters, DataAccessObjects dao) throws IOException, SQLException {
   1.134 +    public void editVersion(HttpServletRequest req, HttpServletResponse resp, PathParameters pathParameters, DataAccessObjects dao) throws IOException, SQLException, ServletException {
   1.135          final var viewModel = new VersionEditView();
   1.136          populate(viewModel, pathParameters, dao);
   1.137  
   1.138          if (viewModel.getProjectInfo() == null || viewModel.getVersionFilter() == null) {
   1.139              resp.sendError(HttpServletResponse.SC_NOT_FOUND);
   1.140 -            return ResponseType.NONE;
   1.141 +            return;
   1.142          }
   1.143  
   1.144          viewModel.setVersion(viewModel.getVersionFilter());
   1.145  
   1.146 -        return forwardView(req, viewModel, "version-form");
   1.147 +        forwardView(req, resp, viewModel, "version-form");
   1.148      }
   1.149  
   1.150      @RequestMapping(requestPath = "$project/create-version", method = HttpMethod.GET)
   1.151 -    public ResponseType createVersion(HttpServletRequest req, HttpServletResponse resp, PathParameters pathParameters, DataAccessObjects dao) throws IOException, SQLException {
   1.152 +    public void createVersion(HttpServletRequest req, HttpServletResponse resp, PathParameters pathParameters, DataAccessObjects dao) throws IOException, SQLException, ServletException {
   1.153          final var viewModel = new VersionEditView();
   1.154          populate(viewModel, pathParameters, dao);
   1.155  
   1.156          if (viewModel.getProjectInfo() == null) {
   1.157              resp.sendError(HttpServletResponse.SC_NOT_FOUND);
   1.158 -            return ResponseType.NONE;
   1.159 +            return;
   1.160          }
   1.161  
   1.162          viewModel.setVersion(new Version(-1));
   1.163  
   1.164 -        return forwardView(req, viewModel, "version-form");
   1.165 +        forwardView(req, resp, viewModel, "version-form");
   1.166      }
   1.167  
   1.168      @RequestMapping(requestPath = "commit-version", method = HttpMethod.POST)
   1.169 -    public ResponseType commitVersion(HttpServletRequest req, HttpServletResponse resp, DataAccessObjects dao) throws IOException {
   1.170 +    public void commitVersion(HttpServletRequest req, HttpServletResponse resp, DataAccessObjects dao) throws IOException, ServletException {
   1.171  
   1.172          try {
   1.173              final var project = dao.getProjectDao().find(getParameter(req, Integer.class, "pid").orElseThrow());
   1.174              if (project == null) {
   1.175                  // TODO: improve error handling, because not found is not correct for this POST request
   1.176                  resp.sendError(HttpServletResponse.SC_NOT_FOUND);
   1.177 -                return ResponseType.NONE;
   1.178 +                return;
   1.179              }
   1.180              final var version = new Version(getParameter(req, Integer.class, "id").orElseThrow());
   1.181              version.setName(getParameter(req, String.class, "name").orElseThrow());
   1.182 @@ -325,74 +325,73 @@
   1.183  
   1.184              setRedirectLocation(req, "./projects/" + project.getNode() + "/versions/");
   1.185              setContentPage(req, Constants.JSP_COMMIT_SUCCESSFUL);
   1.186 +
   1.187 +            renderSite(req, resp);
   1.188          } catch (NoSuchElementException | IllegalArgumentException | SQLException ex) {
   1.189              resp.sendError(HttpServletResponse.SC_NOT_IMPLEMENTED);
   1.190              // TODO: implement - fix issue #21
   1.191 -            return ResponseType.NONE;
   1.192          }
   1.193 -
   1.194 -        return ResponseType.HTML;
   1.195      }
   1.196  
   1.197      @RequestMapping(requestPath = "$project/components/", method = HttpMethod.GET)
   1.198 -    public ResponseType components(HttpServletRequest req, HttpServletResponse resp, PathParameters pathParameters, DataAccessObjects dao) throws IOException, SQLException {
   1.199 +    public void components(HttpServletRequest req, HttpServletResponse resp, PathParameters pathParameters, DataAccessObjects dao) throws IOException, SQLException, ServletException {
   1.200          final var viewModel = new ComponentsView();
   1.201          populate(viewModel, pathParameters, dao);
   1.202  
   1.203          final var projectInfo = viewModel.getProjectInfo();
   1.204          if (projectInfo == null) {
   1.205              resp.sendError(HttpServletResponse.SC_NOT_FOUND);
   1.206 -            return ResponseType.NONE;
   1.207 +            return;
   1.208          }
   1.209  
   1.210          final var issueDao = dao.getIssueDao();
   1.211          final var issues = issueDao.list(projectInfo.getProject());
   1.212          viewModel.update(projectInfo.getComponents(), issues);
   1.213  
   1.214 -        return forwardView(req, viewModel, "components");
   1.215 +        forwardView(req, resp, viewModel, "components");
   1.216      }
   1.217  
   1.218      @RequestMapping(requestPath = "$project/components/$component/edit", method = HttpMethod.GET)
   1.219 -    public ResponseType editComponent(HttpServletRequest req, HttpServletResponse resp, PathParameters pathParameters, DataAccessObjects dao) throws IOException, SQLException {
   1.220 +    public void editComponent(HttpServletRequest req, HttpServletResponse resp, PathParameters pathParameters, DataAccessObjects dao) throws IOException, SQLException, ServletException {
   1.221          final var viewModel = new ComponentEditView();
   1.222          populate(viewModel, pathParameters, dao);
   1.223  
   1.224          if (viewModel.getProjectInfo() == null || viewModel.getComponentFilter() == null) {
   1.225              resp.sendError(HttpServletResponse.SC_NOT_FOUND);
   1.226 -            return ResponseType.NONE;
   1.227 +            return;
   1.228          }
   1.229  
   1.230          viewModel.setComponent(viewModel.getComponentFilter());
   1.231          viewModel.setUsers(dao.getUserDao().list());
   1.232  
   1.233 -        return forwardView(req, viewModel, "component-form");
   1.234 +        forwardView(req, resp, viewModel, "component-form");
   1.235      }
   1.236  
   1.237      @RequestMapping(requestPath = "$project/create-component", method = HttpMethod.GET)
   1.238 -    public ResponseType createComponent(HttpServletRequest req, HttpServletResponse resp, PathParameters pathParameters, DataAccessObjects dao) throws IOException, SQLException {
   1.239 +    public void createComponent(HttpServletRequest req, HttpServletResponse resp, PathParameters pathParameters, DataAccessObjects dao) throws IOException, SQLException, ServletException {
   1.240          final var viewModel = new ComponentEditView();
   1.241          populate(viewModel, pathParameters, dao);
   1.242  
   1.243          if (viewModel.getProjectInfo() == null) {
   1.244              resp.sendError(HttpServletResponse.SC_NOT_FOUND);
   1.245 -            return ResponseType.NONE;
   1.246 +            return;
   1.247          }
   1.248  
   1.249          viewModel.setComponent(new Component(-1));
   1.250          viewModel.setUsers(dao.getUserDao().list());
   1.251  
   1.252 -        return forwardView(req, viewModel, "component-form");
   1.253 +        forwardView(req, resp, viewModel, "component-form");
   1.254      }
   1.255  
   1.256      @RequestMapping(requestPath = "commit-component", method = HttpMethod.POST)
   1.257 -    public ResponseType commitComponent(HttpServletRequest req, HttpServletResponse resp, DataAccessObjects dao) throws IOException {
   1.258 +    public void commitComponent(HttpServletRequest req, HttpServletResponse resp, DataAccessObjects dao) throws IOException, ServletException {
   1.259  
   1.260          try {
   1.261              final var project = dao.getProjectDao().find(getParameter(req, Integer.class, "pid").orElseThrow());
   1.262              if (project == null) {
   1.263                  // TODO: improve error handling, because not found is not correct for this POST request
   1.264                  resp.sendError(HttpServletResponse.SC_NOT_FOUND);
   1.265 -                return ResponseType.NONE;
   1.266 +                return;
   1.267              }
   1.268              final var component = new Component(getParameter(req, Integer.class, "id").orElseThrow());
   1.269              component.setName(getParameter(req, String.class, "name").orElseThrow());
   1.270 @@ -411,13 +410,12 @@
   1.271  
   1.272              setRedirectLocation(req, "./projects/" + project.getNode() + "/components/");
   1.273              setContentPage(req, Constants.JSP_COMMIT_SUCCESSFUL);
   1.274 +
   1.275 +            renderSite(req, resp);
   1.276          } catch (NoSuchElementException | IllegalArgumentException | SQLException ex) {
   1.277              resp.sendError(HttpServletResponse.SC_NOT_IMPLEMENTED);
   1.278              // TODO: implement - fix issue #21
   1.279 -            return ResponseType.NONE;
   1.280          }
   1.281 -
   1.282 -        return ResponseType.HTML;
   1.283      }
   1.284  
   1.285      private void configureIssueEditor(IssueEditView viewModel, Issue issue, DataAccessObjects dao) throws SQLException {
   1.286 @@ -430,75 +428,75 @@
   1.287      }
   1.288  
   1.289      @RequestMapping(requestPath = "$project/issues/$issue/view", method = HttpMethod.GET)
   1.290 -    public ResponseType viewIssue(HttpServletRequest req, HttpServletResponse resp, PathParameters pathParameters, DataAccessObjects dao) throws IOException, SQLException {
   1.291 +    public void viewIssue(HttpServletRequest req, HttpServletResponse resp, PathParameters pathParameters, DataAccessObjects dao) throws IOException, SQLException, ServletException {
   1.292          final var viewModel = new IssueDetailView();
   1.293          populate(viewModel, pathParameters, dao);
   1.294  
   1.295          final var projectInfo = viewModel.getProjectInfo();
   1.296          if (projectInfo == null) {
   1.297              resp.sendError(HttpServletResponse.SC_NOT_FOUND);
   1.298 -            return ResponseType.NONE;
   1.299 +            return;
   1.300          }
   1.301  
   1.302          final var issueDao = dao.getIssueDao();
   1.303          final var issue = issueDao.find(Functions.parseIntOrZero(pathParameters.get("issue")));
   1.304          if (issue == null) {
   1.305              resp.sendError(HttpServletResponse.SC_NOT_FOUND);
   1.306 -            return ResponseType.NONE;
   1.307 +            return;
   1.308          }
   1.309  
   1.310          issueDao.joinVersionInformation(issue);
   1.311          viewModel.setIssue(issue);
   1.312          viewModel.setComments(issueDao.listComments(issue));
   1.313  
   1.314 -        return forwardView(req, viewModel, "issue-view");
   1.315 +        forwardView(req, resp, viewModel, "issue-view");
   1.316      }
   1.317  
   1.318      // TODO: why should the issue editor be child of $project?
   1.319      @RequestMapping(requestPath = "$project/issues/$issue/edit", method = HttpMethod.GET)
   1.320 -    public ResponseType editIssue(HttpServletRequest req, HttpServletResponse resp, PathParameters pathParameters, DataAccessObjects dao) throws IOException, SQLException {
   1.321 +    public void editIssue(HttpServletRequest req, HttpServletResponse resp, PathParameters pathParameters, DataAccessObjects dao) throws IOException, SQLException, ServletException {
   1.322          final var viewModel = new IssueEditView();
   1.323          populate(viewModel, pathParameters, dao);
   1.324  
   1.325          final var projectInfo = viewModel.getProjectInfo();
   1.326          if (projectInfo == null) {
   1.327              resp.sendError(HttpServletResponse.SC_NOT_FOUND);
   1.328 -            return ResponseType.NONE;
   1.329 +            return;
   1.330          }
   1.331  
   1.332          final var issueDao = dao.getIssueDao();
   1.333          final var issue = issueDao.find(Functions.parseIntOrZero(pathParameters.get("issue")));
   1.334          if (issue == null) {
   1.335              resp.sendError(HttpServletResponse.SC_NOT_FOUND);
   1.336 -            return ResponseType.NONE;
   1.337 +            return;
   1.338          }
   1.339  
   1.340          issueDao.joinVersionInformation(issue);
   1.341          configureIssueEditor(viewModel, issue, dao);
   1.342  
   1.343 -        return forwardView(req, viewModel, "issue-form");
   1.344 +        forwardView(req, resp, viewModel, "issue-form");
   1.345      }
   1.346  
   1.347      @RequestMapping(requestPath = "$project/create-issue", method = HttpMethod.GET)
   1.348 -    public ResponseType createIssue(HttpServletRequest req, HttpServletResponse resp, PathParameters pathParameters, DataAccessObjects dao) throws IOException, SQLException {
   1.349 +    public void createIssue(HttpServletRequest req, HttpServletResponse resp, PathParameters pathParameters, DataAccessObjects dao) throws IOException, SQLException, ServletException {
   1.350          final var viewModel = new IssueEditView();
   1.351          populate(viewModel, pathParameters, dao);
   1.352  
   1.353          final var projectInfo = viewModel.getProjectInfo();
   1.354          if (projectInfo == null) {
   1.355              resp.sendError(HttpServletResponse.SC_NOT_FOUND);
   1.356 -            return ResponseType.NONE;
   1.357 +            return;
   1.358          }
   1.359  
   1.360          final var issue = new Issue(-1);
   1.361          issue.setProject(projectInfo.getProject());
   1.362          configureIssueEditor(viewModel, issue, dao);
   1.363  
   1.364 -        return forwardView(req, viewModel, "issue-form");
   1.365 +        forwardView(req, resp, viewModel, "issue-form");
   1.366      }
   1.367  
   1.368      @RequestMapping(requestPath = "commit-issue", method = HttpMethod.POST)
   1.369 -    public ResponseType commitIssue(HttpServletRequest req, HttpServletResponse resp, DataAccessObjects dao) throws IOException {
   1.370 +    public void commitIssue(HttpServletRequest req, HttpServletResponse resp, DataAccessObjects dao) throws IOException, ServletException {
   1.371          try {
   1.372              final var issue = new Issue(getParameter(req, Integer.class, "id").orElseThrow());
   1.373              final var componentId = getParameter(req, Integer.class, "component");
   1.374 @@ -512,7 +510,7 @@
   1.375              if (project == null) {
   1.376                  // TODO: improve error handling, because not found is not correct for this POST request
   1.377                  resp.sendError(HttpServletResponse.SC_NOT_FOUND);
   1.378 -                return ResponseType.NONE;
   1.379 +                return;
   1.380              }
   1.381              issue.setProject(project);
   1.382              getParameter(req, String.class, "category").map(IssueCategory::valueOf).ifPresent(issue::setCategory);
   1.383 @@ -549,25 +547,24 @@
   1.384              setRedirectLocation(req, "./projects/" + issue.getProject().getNode()+"/issues/"+issue.getId()+"/view");
   1.385              setContentPage(req, Constants.JSP_COMMIT_SUCCESSFUL);
   1.386  
   1.387 -            return ResponseType.HTML;
   1.388 +            renderSite(req, resp);
   1.389          } catch (NoSuchElementException | IllegalArgumentException | SQLException ex) {
   1.390              resp.sendError(HttpServletResponse.SC_NOT_IMPLEMENTED);
   1.391              // TODO: implement - fix issue #21
   1.392 -            return ResponseType.NONE;
   1.393          }
   1.394      }
   1.395  
   1.396      @RequestMapping(requestPath = "commit-issue-comment", method = HttpMethod.POST)
   1.397 -    public ResponseType commentIssue(HttpServletRequest req, HttpServletResponse resp, DataAccessObjects dao) throws SQLException, IOException {
   1.398 +    public void commentIssue(HttpServletRequest req, HttpServletResponse resp, DataAccessObjects dao) throws SQLException, IOException, ServletException {
   1.399          final var issueIdParam = getParameter(req, Integer.class, "issueid");
   1.400          if (issueIdParam.isEmpty()) {
   1.401              resp.sendError(HttpServletResponse.SC_FORBIDDEN, "Detected manipulated form.");
   1.402 -            return ResponseType.NONE;
   1.403 +            return;
   1.404          }
   1.405          final var issue = dao.getIssueDao().find(issueIdParam.get());
   1.406          if (issue == null) {
   1.407              resp.sendError(HttpServletResponse.SC_NOT_FOUND);
   1.408 -            return ResponseType.NONE;
   1.409 +            return;
   1.410          }
   1.411          try {
   1.412              final var issueComment = new IssueComment(getParameter(req, Integer.class, "commentid").orElse(-1));
   1.413 @@ -588,11 +585,10 @@
   1.414              setRedirectLocation(req, "./projects/" + issue.getProject().getNode()+"/issues/"+issue.getId()+"/view");
   1.415              setContentPage(req, Constants.JSP_COMMIT_SUCCESSFUL);
   1.416  
   1.417 -            return ResponseType.HTML;
   1.418 +            renderSite(req, resp);
   1.419          } catch (NoSuchElementException | IllegalArgumentException | SQLException ex) {
   1.420              resp.sendError(HttpServletResponse.SC_NOT_IMPLEMENTED);
   1.421              // TODO: implement - fix issue #21
   1.422 -            return ResponseType.NONE;
   1.423          }
   1.424      }
   1.425  }

mercurial