Merge "Camera2: Cache method list in MethodNameInvoker." into oc-dev

am: 71029bf631

Change-Id: I99c6322d7e06262861eb0bb8be4ce8d4572ffbae
This commit is contained in:
Will Brazil
2017-06-13 00:24:40 +00:00
committed by android-build-merger

View File

@@ -15,13 +15,13 @@
*/ */
package android.hardware.camera2.dispatch; package android.hardware.camera2.dispatch;
import static com.android.internal.util.Preconditions.checkNotNull;
import android.hardware.camera2.utils.UncheckedThrow; import android.hardware.camera2.utils.UncheckedThrow;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import static com.android.internal.util.Preconditions.*;
/** /**
* Invoke a method on a dispatchable by its name (without knowing the {@code Method} ahead of time). * Invoke a method on a dispatchable by its name (without knowing the {@code Method} ahead of time).
* *
@@ -31,6 +31,7 @@ public class MethodNameInvoker<T> {
private final Dispatchable<T> mTarget; private final Dispatchable<T> mTarget;
private final Class<T> mTargetClass; private final Class<T> mTargetClass;
private final Method[] mTargetClassMethods;
private final ConcurrentHashMap<String, Method> mMethods = private final ConcurrentHashMap<String, Method> mMethods =
new ConcurrentHashMap<>(); new ConcurrentHashMap<>();
@@ -42,6 +43,7 @@ public class MethodNameInvoker<T> {
*/ */
public MethodNameInvoker(Dispatchable<T> target, Class<T> targetClass) { public MethodNameInvoker(Dispatchable<T> target, Class<T> targetClass) {
mTargetClass = targetClass; mTargetClass = targetClass;
mTargetClassMethods = targetClass.getMethods();
mTarget = target; mTarget = target;
} }
@@ -68,7 +70,7 @@ public class MethodNameInvoker<T> {
Method targetMethod = mMethods.get(methodName); Method targetMethod = mMethods.get(methodName);
if (targetMethod == null) { if (targetMethod == null) {
for (Method method : mTargetClass.getMethods()) { for (Method method : mTargetClassMethods) {
// TODO future: match types of params if possible // TODO future: match types of params if possible
if (method.getName().equals(methodName) && if (method.getName().equals(methodName) &&
(params.length == method.getParameterTypes().length) ) { (params.length == method.getParameterTypes().length) ) {