mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Reviewed By: achen1 Differential Revision: D8232155 fbshipit-source-id: 6683c692a830f5a73aab2c606167e54d668ae5c2
34 lines
997 B
Java
34 lines
997 B
Java
package com.facebook.react.bridge;
|
|
|
|
import com.facebook.infer.annotation.Assertions;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
public class JSIModuleRegistry {
|
|
|
|
private final Map<Class, JSIModuleHolder> mModules = new HashMap<>();
|
|
|
|
public JSIModuleRegistry() { }
|
|
|
|
public <T extends JSIModule> T getModule(Class<T> moduleClass) {
|
|
JSIModuleHolder jsiModuleHolder = mModules.get(moduleClass);
|
|
if (jsiModuleHolder == null) {
|
|
throw new IllegalArgumentException("Unable to find JSIModule for class " + moduleClass);
|
|
}
|
|
return (T) Assertions.assertNotNull(jsiModuleHolder.getJSIModule());
|
|
}
|
|
|
|
public void registerModules(List<JSIModuleSpec> jsiModules) {
|
|
for (JSIModuleSpec spec : jsiModules) {
|
|
mModules.put(spec.getJSIModuleClass(), new JSIModuleHolder(spec));
|
|
}
|
|
}
|
|
|
|
public void notifyJSInstanceDestroy() {
|
|
for (JSIModuleHolder moduleHolder : mModules.values()) {
|
|
moduleHolder.notifyJSInstanceDestroy();
|
|
}
|
|
}
|
|
}
|