|
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