mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-04-16 12:12:20 +08:00
Remove JS config completely
Reviewed By: astreet Differential Revision: D3276230 fbshipit-source-id: b3ab7e7dc149696b7db1049613fbb6a2a19bc8fb
This commit is contained in:
committed by
Facebook Github Bot 2
parent
4a7f2192f9
commit
0934470676
@@ -15,7 +15,9 @@ import java.lang.ref.WeakReference;
|
||||
import java.lang.reflect.InvocationHandler;
|
||||
import java.lang.reflect.Method;
|
||||
import java.lang.reflect.Proxy;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.WeakHashMap;
|
||||
|
||||
import com.facebook.common.logging.FLog;
|
||||
@@ -29,23 +31,21 @@ import com.facebook.react.common.ReactConstants;
|
||||
* JavaScript.
|
||||
*/
|
||||
public class JavaScriptModuleRegistry {
|
||||
|
||||
private final CatalystInstance mCatalystInstance;
|
||||
private final WeakHashMap<ExecutorToken, HashMap<Class<? extends JavaScriptModule>, JavaScriptModule>> mModuleInstances;
|
||||
private final HashMap<Class<? extends JavaScriptModule>, JavaScriptModuleRegistration> mModuleRegistrations;
|
||||
|
||||
public JavaScriptModuleRegistry(
|
||||
CatalystInstance instance,
|
||||
JavaScriptModulesConfig config) {
|
||||
mCatalystInstance = instance;
|
||||
public JavaScriptModuleRegistry(List<JavaScriptModuleRegistration> config) {
|
||||
mModuleInstances = new WeakHashMap<>();
|
||||
mModuleRegistrations = new HashMap<>();
|
||||
for (JavaScriptModuleRegistration registration : config.getModuleDefinitions()) {
|
||||
for (JavaScriptModuleRegistration registration : config) {
|
||||
mModuleRegistrations.put(registration.getModuleInterface(), registration);
|
||||
}
|
||||
}
|
||||
|
||||
public synchronized <T extends JavaScriptModule> T getJavaScriptModule(ExecutorToken executorToken, Class<T> moduleInterface) {
|
||||
public synchronized <T extends JavaScriptModule> T getJavaScriptModule(
|
||||
CatalystInstance instance,
|
||||
ExecutorToken executorToken,
|
||||
Class<T> moduleInterface) {
|
||||
HashMap<Class<? extends JavaScriptModule>, JavaScriptModule> instancesForContext =
|
||||
mModuleInstances.get(executorToken);
|
||||
if (instancesForContext == null) {
|
||||
@@ -65,11 +65,25 @@ public class JavaScriptModuleRegistry {
|
||||
JavaScriptModule interfaceProxy = (JavaScriptModule) Proxy.newProxyInstance(
|
||||
moduleInterface.getClassLoader(),
|
||||
new Class[]{moduleInterface},
|
||||
new JavaScriptModuleInvocationHandler(executorToken, mCatalystInstance, registration));
|
||||
new JavaScriptModuleInvocationHandler(executorToken, instance, registration));
|
||||
instancesForContext.put(moduleInterface, interfaceProxy);
|
||||
return (T) interfaceProxy;
|
||||
}
|
||||
|
||||
public static class Builder {
|
||||
private List<JavaScriptModuleRegistration> mModules =
|
||||
new ArrayList<JavaScriptModuleRegistration>();
|
||||
|
||||
public Builder add(Class<? extends JavaScriptModule> moduleInterfaceClass) {
|
||||
mModules.add(new JavaScriptModuleRegistration(moduleInterfaceClass));
|
||||
return this;
|
||||
}
|
||||
|
||||
public JavaScriptModuleRegistry build() {
|
||||
return new JavaScriptModuleRegistry(mModules);
|
||||
}
|
||||
}
|
||||
|
||||
private static class JavaScriptModuleInvocationHandler implements InvocationHandler {
|
||||
|
||||
private final WeakReference<ExecutorToken> mExecutorToken;
|
||||
|
||||
Reference in New Issue
Block a user