From 764fd955db7150313c51dd3303e30ed8e7f14772 Mon Sep 17 00:00:00 2001 From: Ramanpreet Nara Date: Wed, 5 Jun 2019 18:58:38 -0700 Subject: [PATCH] Setup TurboModuleManager inside Fb4a Summary: This diff introduces `TurboModuleManagerDelegate` in Fb4a and Workplace. `Fb4aTurboModuleManagerDelegate` is responsible for creating TurboModules for Fb4a. `WorkTurboModuleManagerDelegate` is responsible for creating TurboModules for Workplace. Reviewed By: mdvacca Differential Revision: D15268563 fbshipit-source-id: c254c31856c59b3551bfe54b25c715c848646c5a --- ...eactPackageTurboModuleManagerDelegate.java | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/ReactPackageTurboModuleManagerDelegate.java b/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/ReactPackageTurboModuleManagerDelegate.java index 839ada2cf08..4f5ba651247 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/ReactPackageTurboModuleManagerDelegate.java +++ b/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/ReactPackageTurboModuleManagerDelegate.java @@ -2,6 +2,7 @@ package com.facebook.react.turbomodule.core; +import com.facebook.infer.annotation.Assertions; import com.facebook.react.ReactPackage; import com.facebook.react.TurboReactPackage; import com.facebook.react.bridge.CxxModuleWrapper; @@ -19,7 +20,7 @@ public abstract class ReactPackageTurboModuleManagerDelegate extends TurboModule private final Map mModules = new HashMap<>(); private final ReactApplicationContext mReactApplicationContext; - public ReactPackageTurboModuleManagerDelegate(ReactApplicationContext reactApplicationContext, List packages) { + protected ReactPackageTurboModuleManagerDelegate(ReactApplicationContext reactApplicationContext, List packages) { super(); mReactApplicationContext = reactApplicationContext; for (ReactPackage reactPackage : packages) { @@ -101,4 +102,27 @@ public abstract class ReactPackageTurboModuleManagerDelegate extends TurboModule return mModules.get(moduleName); } + + public static abstract class Builder { + private @Nullable List mPackages; + private @Nullable ReactApplicationContext mContext; + + public Builder setPackages(List packages) { + mPackages = new ArrayList<>(packages); + return this; + } + + public Builder setReactApplicationContext(ReactApplicationContext context) { + mContext = context; + return this; + } + + protected abstract ReactPackageTurboModuleManagerDelegate build(ReactApplicationContext context, List packages); + + public ReactPackageTurboModuleManagerDelegate build() { + Assertions.assertNotNull(mContext, "The ReactApplicationContext must be provided to create ReactPackageTurboModuleManagerDelegate"); + Assertions.assertNotNull(mPackages, "A set of ReactPackages must be provided to create ReactPackageTurboModuleManagerDelegate"); + return build(mContext, mPackages); + } + } }