diff --git a/ReactAndroid/src/main/java/com/facebook/react/CoreModulesPackage.java b/ReactAndroid/src/main/java/com/facebook/react/CoreModulesPackage.java index 648116a183..e2db7b6fb7 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/CoreModulesPackage.java +++ b/ReactAndroid/src/main/java/com/facebook/react/CoreModulesPackage.java @@ -13,7 +13,6 @@ import javax.inject.Provider; import java.util.ArrayList; import java.util.Arrays; -import java.util.Collections; import java.util.List; import com.facebook.react.bridge.JavaScriptModule; @@ -188,11 +187,6 @@ import static com.facebook.react.bridge.ReactMarkerConstants.CREATE_UI_MANAGER_M return jsModules; } - @Override - public List createViewManagers(ReactApplicationContext reactContext) { - return Collections.emptyList(); - } - private UIManagerModule createUIManager(ReactApplicationContext reactContext) { ReactMarker.logMarker(CREATE_UI_MANAGER_MODULE_START); Systrace.beginSection(Systrace.TRACE_TAG_REACT_JAVA_BRIDGE, "createUIManagerModule"); diff --git a/ReactAndroid/src/main/java/com/facebook/react/LazyReactPackage.java b/ReactAndroid/src/main/java/com/facebook/react/LazyReactPackage.java index 111291445d..6301f71127 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/LazyReactPackage.java +++ b/ReactAndroid/src/main/java/com/facebook/react/LazyReactPackage.java @@ -10,11 +10,13 @@ package com.facebook.react; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import com.facebook.react.bridge.ModuleSpec; import com.facebook.react.bridge.NativeModule; import com.facebook.react.bridge.ReactApplicationContext; +import com.facebook.react.uimanager.ViewManager; import com.facebook.systrace.Systrace; import com.facebook.systrace.SystraceMessage; @@ -48,4 +50,26 @@ public abstract class LazyReactPackage implements ReactPackage { } return modules; } + + /** + * @param reactContext react application context that can be used to create View Managers. + * @return list of module specs that can create the View Managers. + */ + public List getViewManagers(ReactApplicationContext reactContext) { + return Collections.emptyList(); + } + + @Override + public List createViewManagers(ReactApplicationContext reactContext) { + List viewManagerModuleSpecs = getViewManagers(reactContext); + if (viewManagerModuleSpecs == null || viewManagerModuleSpecs.isEmpty()) { + return Collections.emptyList(); + } + + List viewManagers = new ArrayList<>(); + for (ModuleSpec moduleSpec : viewManagerModuleSpecs) { + viewManagers.add((ViewManager) moduleSpec.getProvider().get()); + } + return viewManagers; + } } diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/text/BUCK b/ReactAndroid/src/main/java/com/facebook/react/views/text/BUCK index 5e33576153..50c1319971 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/text/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/views/text/BUCK @@ -9,8 +9,9 @@ android_library( react_native_dep('third-party/java/jsr-305:jsr-305'), react_native_target('java/com/facebook/react/bridge:bridge'), react_native_target('java/com/facebook/react/common:common'), - react_native_target('java/com/facebook/react/uimanager/annotations:annotations'), + react_native_target('java/com/facebook/react/module/annotations:annotations'), react_native_target('java/com/facebook/react/uimanager:uimanager'), + react_native_target('java/com/facebook/react/uimanager/annotations:annotations'), react_native_target('java/com/facebook/react/views/view:view'), ], visibility = [ diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactRawTextManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactRawTextManager.java index 98e02829ae..4603183c8b 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactRawTextManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactRawTextManager.java @@ -10,12 +10,14 @@ package com.facebook.react.views.text; import com.facebook.react.common.annotations.VisibleForTesting; +import com.facebook.react.module.annotations.ReactModule; import com.facebook.react.uimanager.ThemedReactContext; /** * Manages raw text nodes. Since they are used only as a virtual nodes any type of native view * operation will throw an {@link IllegalStateException} */ +@ReactModule(name = ReactRawTextManager.REACT_CLASS) public class ReactRawTextManager extends ReactTextViewManager { @VisibleForTesting diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextViewManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextViewManager.java index 673a98cea1..82deb5bc46 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextViewManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextViewManager.java @@ -19,6 +19,7 @@ import android.widget.TextView; import com.facebook.csslayout.CSSConstants; import com.facebook.csslayout.Spacing; import com.facebook.react.bridge.JSApplicationIllegalArgumentException; +import com.facebook.react.module.annotations.ReactModule; import com.facebook.react.uimanager.BaseViewManager; import com.facebook.react.uimanager.PixelUtil; import com.facebook.react.uimanager.annotations.ReactProp; @@ -36,6 +37,7 @@ import com.facebook.react.uimanager.annotations.ReactPropGroup; * @{link ReactTextShadowNode} hierarchy to calculate a {@link Spannable} text representing the * whole text subtree. */ +@ReactModule(name = ReactTextViewManager.REACT_CLASS) public class ReactTextViewManager extends BaseViewManager { @VisibleForTesting @@ -93,7 +95,7 @@ public class ReactTextViewManager extends BaseViewManager>> 24); view.setBorderColor(SPACING_TYPES[index], rgbComponent, alphaComponent); } - + @Override public void updateExtraData(ReactTextView view, Object extraData) { ReactTextUpdate update = (ReactTextUpdate) extraData; diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/view/BUCK b/ReactAndroid/src/main/java/com/facebook/react/views/view/BUCK index 76826b3023..b7804ef562 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/view/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/views/view/BUCK @@ -9,9 +9,10 @@ android_library( react_native_dep('third-party/java/jsr-305:jsr-305'), react_native_target('java/com/facebook/react/bridge:bridge'), react_native_target('java/com/facebook/react/common:common'), + react_native_target('java/com/facebook/react/module/annotations:annotations'), react_native_target('java/com/facebook/react/touch:touch'), - react_native_target('java/com/facebook/react/uimanager/annotations:annotations'), react_native_target('java/com/facebook/react/uimanager:uimanager'), + react_native_target('java/com/facebook/react/uimanager/annotations:annotations'), ], visibility = [ 'PUBLIC', diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.java index 1903f9168b..3655e898a9 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewManager.java @@ -26,6 +26,7 @@ import com.facebook.react.bridge.ReadableArray; import com.facebook.react.bridge.ReadableMap; import com.facebook.react.common.MapBuilder; import com.facebook.react.common.annotations.VisibleForTesting; +import com.facebook.react.module.annotations.ReactModule; import com.facebook.react.uimanager.*; import com.facebook.react.uimanager.annotations.ReactProp; import com.facebook.react.uimanager.annotations.ReactPropGroup; @@ -33,6 +34,7 @@ import com.facebook.react.uimanager.annotations.ReactPropGroup; /** * View manager for AndroidViews (plain React Views). */ +@ReactModule(name = ReactViewManager.REACT_CLASS) public class ReactViewManager extends ViewGroupManager { @VisibleForTesting