You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by su...@apache.org on 2020/03/26 04:58:44 UTC
[groovy] branch GROOVY_3_0_X updated: GROOVY-9480: New v9
ClassFinder throws NoSuchFileException/UnsupportedOperationException and
writes it to stderr (#1205)
This is an automated email from the ASF dual-hosted git repository.
sunlan pushed a commit to branch GROOVY_3_0_X
in repository https://gitbox.apache.org/repos/asf/groovy.git
The following commit(s) were added to refs/heads/GROOVY_3_0_X by this push:
new f09f1aa GROOVY-9480: New v9 ClassFinder throws NoSuchFileException/UnsupportedOperationException and writes it to stderr (#1205)
f09f1aa is described below
commit f09f1aa7e21a40f64e868362ad352b34eba6f757
Author: Daniel.Sun <su...@apache.org>
AuthorDate: Thu Mar 26 12:50:18 2020 +0800
GROOVY-9480: New v9 ClassFinder throws NoSuchFileException/UnsupportedOperationException and writes it to stderr (#1205)
(cherry picked from commit 1a4596960281932ae79d41288aac6ba297cf36c6)
---
.../vmplugin/v9/ClassFindFailedException.java | 29 ++++++++++++++++++++++
.../codehaus/groovy/vmplugin/v9/ClassFinder.java | 5 +++-
.../groovy/vmplugin/v9/ClassFinderTest.groovy | 9 +++++++
3 files changed, 42 insertions(+), 1 deletion(-)
diff --git a/src/main/java/org/codehaus/groovy/vmplugin/v9/ClassFindFailedException.java b/src/main/java/org/codehaus/groovy/vmplugin/v9/ClassFindFailedException.java
new file mode 100644
index 0000000..06067c7
--- /dev/null
+++ b/src/main/java/org/codehaus/groovy/vmplugin/v9/ClassFindFailedException.java
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.codehaus.groovy.vmplugin.v9;
+
+/**
+ * Represents error occurred during finding classes
+ * @since 3.0.3
+ */
+public class ClassFindFailedException extends RuntimeException {
+ public ClassFindFailedException(String msg, Throwable t) {
+ super(msg, t);
+ }
+}
diff --git a/src/main/java/org/codehaus/groovy/vmplugin/v9/ClassFinder.java b/src/main/java/org/codehaus/groovy/vmplugin/v9/ClassFinder.java
index 4bfe659..12d7197 100644
--- a/src/main/java/org/codehaus/groovy/vmplugin/v9/ClassFinder.java
+++ b/src/main/java/org/codehaus/groovy/vmplugin/v9/ClassFinder.java
@@ -147,7 +147,10 @@ public class ClassFinder {
});
} catch (UnsupportedOperationException ignored) {
} catch (Exception e) {
- e.printStackTrace();
+ throw new ClassFindFailedException(
+ String.format("Failed to find classes via uri: %s, prefix: %s, packageName: %s, recursive: %s",
+ uri, prefix, packageName, recursive
+ ), e);
}
return result;
diff --git a/src/test/org/codehaus/groovy/vmplugin/v9/ClassFinderTest.groovy b/src/test/org/codehaus/groovy/vmplugin/v9/ClassFinderTest.groovy
index 953bd1a..824d5ff 100644
--- a/src/test/org/codehaus/groovy/vmplugin/v9/ClassFinderTest.groovy
+++ b/src/test/org/codehaus/groovy/vmplugin/v9/ClassFinderTest.groovy
@@ -102,4 +102,13 @@ class ClassFinderTest {
assert (ResolveVisitor.DEFAULT_IMPORTS as List).sort() == r1.values().stream().flatMap(e -> e.stream()).collect(Collectors.toSet()).sort()
}
+
+ @Test
+ void testGroovy9480() {
+ try {
+ ClassFinder.find(URI.create("file:/"), "NOT_EXISTS", "org/", false)
+ } catch (ClassFindFailedException e) {
+ assert e.message.contains('Failed to find classes')
+ }
+ }
}