[
https://issues.apache.org/jira/browse/GROOVY-10958?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Paul King closed GROOVY-10958.
------------------------------
> Confusing error message from GroovyScriptEngine
> -----------------------------------------------
>
> Key: GROOVY-10958
> URL: https://issues.apache.org/jira/browse/GROOVY-10958
> Project: Groovy
> Issue Type: Improvement
> Components: GroovyScriptEngine
> Affects Versions: 2.5.19, 3.0.15, 4.0.9
> Reporter: Charlie Hubbard
> Assignee: Paul King
> Priority: Minor
> Fix For: 4.0.10
>
>
> When the GroovyScriptEngine can't find a file or receives a Malformed URL it
> writes out a message like this:
> {code:java}
> groovy.util.ResourceException: Cannot open URL:
> file:/var/lib/jenkins/workspace/TheProject/web/src/main/webapp/WEB-INF/scripts/,
> DocumentETL.groovy
> {code}
> The confusing part is the ", " inserted between the path and the filename.
> The way it reads looks like there is an errant ", " in the full path sent to
> the URL. No wonder it can't find it. But, it turns out the exception
> processing logic is inserting that. Here is the exert from the code:
> {code:java}
> } catch (MalformedURLException e) {
> String message = "Malformed URL: " + root + ", " + resourceName;
> if (se == null) {
> se = new ResourceException(message);
> } else {
> se = new ResourceException(message, se);
> }
> } catch (IOException e1) {
> String message = "Cannot open URL: " + root + ", " + resourceName;
> groovyScriptConn = null;
> if (se == null) {
> se = new ResourceException(message);
> } else {
> se = new ResourceException(message, se);
> }
> }{code}
> This will cause people to go searching for some errant command-space
> throughout their code while debugging issues like this because we are
> normally conditioned to see the full path that the system is attempting to
> load. The phrase before insinuates the full URL is next. As opposed to a
> segmented version of it. The will cause people to overlook what is really
> the error because it's such an aberrant message.
> Using the `scriptUrl` in the message would make more sense when IOException
> was thrown:
> {code:java}
> String message = "Cannot open URL: " + scriptUrl;
> {code}
> For the malformed exception it might be tricky to reconstruct the full URL,
> but it should be made more clear like:
> {code:java}
> String message = "Malformed URL: with context=" + root + " and spec=" +
> resourceName + " because " + e.getMessage();{code}
> Some way to delimit the parts of the URL if you can't create the full context.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)