// Copyright (c) 2009 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.sdk.internal.protocolparser.dynamicimpl;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.util.Map;
/**
* The implementation of {@link InvocationHandler} for JSON types. It dispatches calls to method
* handlers from the map.
*/
class JsonInvocationHandler implements InvocationHandler {
private final ObjectData objectData;
private final Map<Method, MethodHandler> methodHandlerMap;
JsonInvocationHandler(ObjectData objectData, Map<Method, MethodHandler> methodHandlerMap) {
this.objectData = objectData;
this.methodHandlerMap = methodHandlerMap;
}
ObjectData getObjectData() {
return objectData;
}
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
MethodHandler methodHandler = methodHandlerMap.get(method);
if (methodHandler == null) {
throw new RuntimeException("No method handler for " + method);
}
return methodHandler.handle(objectData, args);
}
}