Skip to content

Commit 91e3c12

Browse files
committed
Improve error handling
1 parent f8a81a5 commit 91e3c12

File tree

3 files changed

+19
-2
lines changed

3 files changed

+19
-2
lines changed

src/main/java/org/commonwl/view/workflow/WorkflowController.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,22 +127,24 @@ public ModelAndView createWorkflow(@Valid WorkflowForm workflowForm, BindingResu
127127
return new ModelAndView("redirect:" + gitInfo.getInternalUrl());
128128
}
129129
} catch (TransportException ex) {
130+
logger.warn("git.sshError " + workflowForm , ex);
130131
bindingResult.rejectValue("url", "git.sshError");
131132
return new ModelAndView("index");
132133
} catch (GitAPIException ex) {
134+
logger.error("git.retrievalError " + workflowForm , ex);
133135
bindingResult.rejectValue("url", "git.retrievalError");
134-
logger.error("Git API Error", ex);
135136
return new ModelAndView("index");
136137
} catch (WorkflowNotFoundException ex) {
138+
logger.warn("git.pathTraversal " + workflowForm , ex);
137139
bindingResult.rejectValue("url", "git.pathTraversal");
138140
return new ModelAndView("index");
139141
} catch (Exception ex) {
142+
logger.warn("url.parsingError " + workflowForm , ex);
140143
bindingResult.rejectValue("url", "url.parsingError");
141144
return new ModelAndView("index");
142145
}
143146
}
144147
gitInfo = workflow.getRetrievedFrom();
145-
146148
// Redirect to the workflow
147149
return new ModelAndView("redirect:" + gitInfo.getInternalUrl());
148150
}
@@ -473,12 +475,16 @@ private ModelAndView getWorkflow(GitDetails gitDetails, RedirectAttributes redir
473475
}
474476
}
475477
} catch (TransportException ex) {
478+
logger.warn("git.sshError " + workflowForm , ex);
476479
errors.rejectValue("url", "git.sshError", "SSH URLs are not supported, please provide a HTTPS URL for the repository or submodules");
477480
} catch (GitAPIException ex) {
481+
logger.error("git.retrievalError " + workflowForm, ex);
478482
errors.rejectValue("url", "git.retrievalError", "The workflow could not be retrieved from the Git repository using the details given");
479483
} catch (WorkflowNotFoundException ex) {
484+
logger.warn("git.pathTraversal " + workflowForm, ex);
480485
errors.rejectValue("url", "git.pathTraversal", "The path given did not resolve to a location within the repository");
481486
} catch (IOException ex) {
487+
logger.warn("git.parsingError " + workflowForm, ex);
482488
errors.rejectValue("url", "url.parsingError", "The workflow could not be parsed from the given URL");
483489
}
484490
}

src/main/java/org/commonwl/view/workflow/WorkflowForm.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,4 +75,11 @@ public void setPath(String path) {
7575
private String trimTrailingSlashes(String url) {
7676
return url.replaceAll("\\/+$", "");
7777
}
78+
79+
@Override
80+
public String toString() {
81+
return "WorkflowForm [" + (url != null ? "url=" + url + ", " : "")
82+
+ (branch != null ? "branch=" + branch + ", " : "") + (path != null ? "path=" + path : "") + "]";
83+
}
84+
7885
}

src/main/java/org/commonwl/view/workflow/WorkflowService.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141

4242
import java.io.File;
4343
import java.io.IOException;
44+
import java.nio.file.Files;
4445
import java.nio.file.Path;
4546
import java.util.ArrayList;
4647
import java.util.Calendar;
@@ -307,6 +308,9 @@ public QueuedWorkflow createQueuedWorkflow(GitDetails gitInfo)
307308
}
308309

309310
File workflowFile = new File(pathToWorkflowFile.toString());
311+
if (! Files.isReadable(workflowFile.toPath())) {
312+
throw new WorkflowNotFoundException();
313+
}
310314
Workflow basicModel = cwlService.parseWorkflowNative(workflowFile);
311315

312316
// Set origin details

0 commit comments

Comments
 (0)