Skip to content

Commit 7311fad

Browse files
committed
support anonymous local DependencyRuler, take package of DependencyRuler if it's anonymous and there's no base
1 parent b9502b3 commit 7311fad

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

code-assert/src/main/java/guru/nidi/codeassert/dependency/DependencyRules.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,11 @@
2323
import java.lang.reflect.Field;
2424
import java.util.ArrayList;
2525
import java.util.List;
26+
import java.util.regex.Pattern;
2627

2728
public final class DependencyRules {
2829
private static final Logger LOG = LoggerFactory.getLogger(DependencyRules.class);
30+
private static final Pattern ANONYMOUS_CLASS = Pattern.compile(".*?\\$\\d+");
2931
private static final ThreadLocal<DependencyRules> CURRENT = new ThreadLocal<>();
3032

3133
private final List<DependencyRule> rules;
@@ -217,10 +219,18 @@ private void postProcessFields(List<DependencyRule> ruleFields, boolean external
217219
}
218220

219221
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();
224234
}
225235

226236
private String addPackages(String p1, String p2) {

0 commit comments

Comments
 (0)