|
23 | 23 | import java.lang.reflect.Field; |
24 | 24 | import java.util.ArrayList; |
25 | 25 | import java.util.List; |
| 26 | +import java.util.regex.Pattern; |
26 | 27 |
|
27 | 28 | public final class DependencyRules { |
28 | 29 | private static final Logger LOG = LoggerFactory.getLogger(DependencyRules.class); |
| 30 | + private static final Pattern ANONYMOUS_CLASS = Pattern.compile(".*?\\$\\d+"); |
29 | 31 | private static final ThreadLocal<DependencyRules> CURRENT = new ThreadLocal<>(); |
30 | 32 |
|
31 | 33 | private final List<DependencyRule> rules; |
@@ -217,10 +219,18 @@ private void postProcessFields(List<DependencyRule> ruleFields, boolean external |
217 | 219 | } |
218 | 220 |
|
219 | 221 | private String addPackages(String base, Class<?> clazz) { |
220 | | - final String name = clazz == null || clazz.isAnonymousClass() |
221 | | - ? "" |
222 | | - : camelCaseToDotCase(reallySimpleName(clazz)); |
223 | | - return addPackages(base, name); |
| 222 | + if (clazz == null) { |
| 223 | + return addPackages(base, ""); |
| 224 | + } |
| 225 | + if (isAnonymous(clazz)) { |
| 226 | + return addPackages(base.length() > 0 ? base : clazz.getPackage().getName(), ""); |
| 227 | + } |
| 228 | + return addPackages(base, camelCaseToDotCase(reallySimpleName(clazz))); |
| 229 | + } |
| 230 | + |
| 231 | + private boolean isAnonymous(Class<?> clazz) { |
| 232 | + //anonymous local classes return false to isAnonymousClass() |
| 233 | + return clazz.isAnonymousClass() || ANONYMOUS_CLASS.matcher(clazz.getSimpleName()).matches(); |
224 | 234 | } |
225 | 235 |
|
226 | 236 | private String addPackages(String p1, String p2) { |
|
0 commit comments