Charlie Hubbard created GROOVY-10958:
----------------------------------------
Summary: 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: 4.0.9, 3.0.15, 2.5.19
Reporter: Charlie Hubbard
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)