mirror of https://github.com/apache/openjpa.git
Only substantive change is flipping the order of the args in an
ImplHelper.isAssignable call in FetchConfigurationImpl. We want to test whether the type we're traversing to is derived from the type we're traversing from. git-svn-id: https://svn.apache.org/repos/asf/incubator/openjpa/trunk@508459 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
4efc5d6997
commit
8974a09908
openjpa-kernel/src/main/java/org/apache/openjpa
|
@ -558,7 +558,7 @@ public class FetchConfigurationImpl
|
|||
// see if there's a previous limit
|
||||
int avail = Integer.MIN_VALUE;
|
||||
for (FetchConfigurationImpl f = this; f != null; f = f._parent) {
|
||||
if (ImplHelper.isAssignable(type, f._fromType)) {
|
||||
if (ImplHelper.isAssignable(f._fromType, type)) {
|
||||
avail = f._availableRecursion;
|
||||
if (traverse)
|
||||
avail = reduce(avail);
|
||||
|
|
|
@ -205,11 +205,11 @@ public class ImplHelper {
|
|||
* @return true if the "to" class is assignable to the "from" class
|
||||
*/
|
||||
public static boolean isAssignable(Class from, Class to) {
|
||||
Boolean isAssignable = null;
|
||||
if (from == null || to == null)
|
||||
return false;
|
||||
Map assignableTo = (Map) _assignableTypes.get(from);
|
||||
|
||||
Boolean isAssignable = null;
|
||||
Map assignableTo = (Map) _assignableTypes.get(from);
|
||||
if (assignableTo == null) { // "to" cache doesn't exist, so create it...
|
||||
assignableTo = new ConcurrentHashMap();
|
||||
_assignableTypes.put(from, assignableTo);
|
||||
|
@ -218,7 +218,7 @@ public class ImplHelper {
|
|||
}
|
||||
|
||||
if (isAssignable == null) {// we don't have a record of this pair...
|
||||
isAssignable = new Boolean(from.isAssignableFrom(to));
|
||||
isAssignable = Boolean.valueOf(from.isAssignableFrom(to));
|
||||
assignableTo.put(to, isAssignable);
|
||||
}
|
||||
|
||||
|
|
|
@ -28,15 +28,16 @@ import org.apache.openjpa.lib.util.concurrent.ConcurrentReferenceHashMap;
|
|||
public abstract class OpenJPAId
|
||||
implements Comparable, Serializable {
|
||||
|
||||
// cache the types' generated hashcodes
|
||||
private static ConcurrentReferenceHashMap _typeCache =
|
||||
new ConcurrentReferenceHashMap(ReferenceMap.WEAK, ReferenceMap.HARD);
|
||||
|
||||
protected Class type;
|
||||
protected boolean subs = true;
|
||||
|
||||
// type has his based on the least-derived non-object class so that
|
||||
// user-given ids with non-exact types match ids with exact types
|
||||
private transient int _typeHash = 0;
|
||||
// cache the types' generated hashcodes
|
||||
private static ConcurrentReferenceHashMap _typeCache =
|
||||
new ConcurrentReferenceHashMap(ReferenceMap.WEAK, ReferenceMap.HARD);
|
||||
|
||||
protected OpenJPAId() {
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue