Skip to content

Commit 5a103ab

Browse files
authored
Merge pull request #10470 from douglasom/isDomainClassFix-3.1.x
Fixed non domain classes being identified as a domain class (base branch: 3.1.x).
2 parents 2d21b8d + 1206227 commit 5a103ab

File tree

1 file changed

+15
-9
lines changed

1 file changed

+15
-9
lines changed

grails-core/src/main/groovy/org/grails/core/artefact/DomainClassArtefactHandler.java

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
import java.lang.reflect.Modifier;
3838
import java.net.URL;
3939
import java.util.Map;
40-
import java.util.concurrent.ConcurrentHashMap;
40+
import java.util.TreeSet;
4141

4242
/**
4343
* Evaluates the conventions that define a domain class in Grails.
@@ -115,7 +115,8 @@ public boolean isArtefactClass(Class clazz) {
115115
return isDomainClass(clazz);
116116
}
117117

118-
static final Map<Integer, Boolean> DOMAIN_CLASS_CHECK_CACHE = new ConcurrentHashMap<Integer, Boolean>();
118+
static final TreeSet<String> DOMAIN_CLASS_CACHE = new TreeSet<String>();
119+
static final TreeSet<String> NOT_DOMAIN_CLASS_CACHE = new TreeSet<String>();
119120

120121
public static boolean isDomainClass(Class<?> clazz, boolean allowProxyClass) {
121122
boolean retval = isDomainClass(clazz);
@@ -128,17 +129,22 @@ public static boolean isDomainClass(Class<?> clazz, boolean allowProxyClass) {
128129
public static boolean isDomainClass(Class<?> clazz) {
129130
if (clazz == null) return false;
130131

131-
Integer cacheKey = System.identityHashCode(clazz);
132+
String cacheKey = clazz.getName();
132133

133-
Boolean retval = DOMAIN_CLASS_CHECK_CACHE.get(cacheKey);
134-
if (retval != null) {
135-
return retval;
134+
if (DOMAIN_CLASS_CACHE.contains(cacheKey)) {
135+
return true;
136+
} else if (NOT_DOMAIN_CLASS_CACHE.contains(cacheKey)) {
137+
return false;
136138
}
137139

138-
retval = doIsDomainClassCheck(clazz);
139-
140+
boolean retval = doIsDomainClassCheck(clazz);
141+
140142
if (!developmentMode) {
141-
DOMAIN_CLASS_CHECK_CACHE.put(cacheKey, retval);
143+
if (retval) {
144+
DOMAIN_CLASS_CACHE.add(cacheKey);
145+
} else {
146+
NOT_DOMAIN_CLASS_CACHE.add(cacheKey);
147+
}
142148
}
143149
return retval;
144150
}

0 commit comments

Comments
 (0)