This is an automated email from the ASF dual-hosted git repository.

jasonhuynh pushed a commit to branch feature/GEODE-3247
in repository https://gitbox.apache.org/repos/asf/geode.git


The following commit(s) were added to refs/heads/feature/GEODE-3247 by this 
push:
     new a3027c2  Applied review changes
a3027c2 is described below

commit a3027c2e523c38a2485a02db898740a92deff2a7
Author: Jason Huynh <[email protected]>
AuthorDate: Tue Oct 3 11:49:37 2017 -0700

    Applied review changes
---
 .../cache/query/internal/AttributeDescriptor.java  | 33 ++++------------------
 .../geode/cache/query/internal/PathUtils.java      |  2 +-
 2 files changed, 7 insertions(+), 28 deletions(-)

diff --git 
a/geode-core/src/main/java/org/apache/geode/cache/query/internal/AttributeDescriptor.java
 
b/geode-core/src/main/java/org/apache/geode/cache/query/internal/AttributeDescriptor.java
index 8bef658..55cfe2c 100644
--- 
a/geode-core/src/main/java/org/apache/geode/cache/query/internal/AttributeDescriptor.java
+++ 
b/geode-core/src/main/java/org/apache/geode/cache/query/internal/AttributeDescriptor.java
@@ -32,7 +32,6 @@ import org.apache.geode.cache.EntryDestroyedException;
 import org.apache.geode.cache.query.NameNotFoundException;
 import org.apache.geode.cache.query.QueryInvocationTargetException;
 import org.apache.geode.cache.query.QueryService;
-import org.apache.geode.cache.query.types.ObjectType;
 import org.apache.geode.internal.cache.Token;
 import org.apache.geode.internal.i18n.LocalizedStrings;
 import org.apache.geode.pdx.JSONFormatter;
@@ -52,8 +51,7 @@ public class AttributeDescriptor {
   private final String _name;
   private final MethodInvocationAuthorizer _methodInvocationAuthorizer;
   /** cache for remembering the correct Member for a class and attribute */
-  private static final ConcurrentMap _local_field_cache = new 
ConcurrentHashMap();
-  private static final ConcurrentMap _local_method_cache = new 
ConcurrentHashMap();
+  private static final ConcurrentMap<List, Member> _localCache = new 
ConcurrentHashMap();
 
 
 
@@ -140,11 +138,6 @@ public class AttributeDescriptor {
     }
   }
 
-
-  Member getReadMember(ObjectType targetType) throws NameNotFoundException {
-    return getReadMember(targetType.resolveClass());
-  }
-
   Member getReadMember(Class targetClass) throws NameNotFoundException {
 
     // mapping: public field (same name), method (getAttribute()),
@@ -153,31 +146,17 @@ public class AttributeDescriptor {
     key.add(targetClass);
     key.add(_name);
 
-    Member m = (Member) _local_field_cache.get(key);
-    if (m != null) {
-      return m;
-    } else {
-      m = (Member) _local_method_cache.get(key);
+    Member m = _localCache.computeIfAbsent(key, k -> {
+      Member member = getReadField(targetClass);
+      return member == null ? getReadMethod(targetClass) : member;
+    });
 
-      if (m != null) {
-        return m;
-      }
-    }
-
-    m = getReadField(targetClass);
     if (m == null) {
-      m = getReadMethod(targetClass);
-    } else {
-      _local_field_cache.putIfAbsent(key, m);
-    }
-
-    if (m != null) {
-      _local_method_cache.putIfAbsent(key, m);
-    } else {
       throw new NameNotFoundException(
           
LocalizedStrings.AttributeDescriptor_NO_PUBLIC_ATTRIBUTE_NAMED_0_WAS_FOUND_IN_CLASS_1
               .toLocalizedString(new Object[] {_name, targetClass.getName()}));
     }
+
     // override security for nonpublic derived classes with public members
     ((AccessibleObject) m).setAccessible(true);
     return m;
diff --git 
a/geode-core/src/main/java/org/apache/geode/cache/query/internal/PathUtils.java 
b/geode-core/src/main/java/org/apache/geode/cache/query/internal/PathUtils.java
index 4c7141f..f7daac6 100644
--- 
a/geode-core/src/main/java/org/apache/geode/cache/query/internal/PathUtils.java
+++ 
b/geode-core/src/main/java/org/apache/geode/cache/query/internal/PathUtils.java
@@ -114,7 +114,7 @@ public class PathUtils {
       ObjectType currentType = types[i - 1];
       Member member = new AttributeDescriptor(
           
context.getCache().getQueryService().getMethodInvocationAuthorizer(), 
pathArray[i - 1])
-              .getReadMember(currentType);
+              .getReadMember(currentType.resolveClass());
 
       if (member instanceof Field)
         types[i] = TypeUtils.getObjectType(((Field) member).getType());

-- 
To stop receiving notification emails like this one, please contact
['"[email protected]" <[email protected]>'].

Reply via email to