Skip to content

Commit a13f84a

Browse files
alanleedevfacebook-github-bot
authored andcommitted
Convert CoreReactPackage.java to Kotlin (#50709)
Summary: Pull Request resolved: #50709 Convert Java to Kotlin Changelog: [Internal] Reviewed By: mdvacca Differential Revision: D72825456 fbshipit-source-id: 4c71ae9892c217a722a74d662f6ae1ca68b97d3f
1 parent c9bee00 commit a13f84a

File tree

9 files changed

+159
-143
lines changed

9 files changed

+159
-143
lines changed

packages/react-native/ReactAndroid/api/ReactAndroid.api

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2712,13 +2712,18 @@ public abstract interface class com/facebook/react/modules/core/DeviceEventManag
27122712
}
27132713

27142714
public class com/facebook/react/modules/core/ExceptionsManagerModule : com/facebook/fbreact/specs/NativeExceptionsManagerSpec {
2715+
public static final field Companion Lcom/facebook/react/modules/core/ExceptionsManagerModule$Companion;
2716+
public static final field NAME Ljava/lang/String;
27152717
public fun <init> (Lcom/facebook/react/devsupport/interfaces/DevSupportManager;)V
27162718
public fun dismissRedbox ()V
27172719
public fun reportException (Lcom/facebook/react/bridge/ReadableMap;)V
27182720
public fun reportFatalException (Ljava/lang/String;Lcom/facebook/react/bridge/ReadableArray;D)V
27192721
public fun reportSoftException (Ljava/lang/String;Lcom/facebook/react/bridge/ReadableArray;D)V
27202722
}
27212723

2724+
public final class com/facebook/react/modules/core/ExceptionsManagerModule$Companion {
2725+
}
2726+
27222727
public class com/facebook/react/modules/core/HeadlessJsTaskSupportModule : com/facebook/fbreact/specs/NativeHeadlessJsTaskSupportSpec {
27232728
public fun <init> (Lcom/facebook/react/bridge/ReactApplicationContext;)V
27242729
public fun notifyTaskFinished (D)V
@@ -2802,6 +2807,8 @@ public final class com/facebook/react/modules/core/TimingModule$Companion {
28022807
}
28032808

28042809
public final class com/facebook/react/modules/debug/DevSettingsModule : com/facebook/fbreact/specs/NativeDevSettingsSpec {
2810+
public static final field Companion Lcom/facebook/react/modules/debug/DevSettingsModule$Companion;
2811+
public static final field NAME Ljava/lang/String;
28052812
public fun <init> (Lcom/facebook/react/bridge/ReactApplicationContext;Lcom/facebook/react/devsupport/interfaces/DevSupportManager;)V
28062813
public fun addListener (Ljava/lang/String;)V
28072814
public fun addMenuItem (Ljava/lang/String;)V
@@ -2816,6 +2823,9 @@ public final class com/facebook/react/modules/debug/DevSettingsModule : com/face
28162823
public fun toggleElementInspector ()V
28172824
}
28182825

2826+
public final class com/facebook/react/modules/debug/DevSettingsModule$Companion {
2827+
}
2828+
28192829
public final class com/facebook/react/modules/debug/FpsDebugFrameCallback : android/view/Choreographer$FrameCallback {
28202830
public fun <init> (Lcom/facebook/react/bridge/ReactContext;)V
28212831
public fun doFrame (J)V
@@ -2847,9 +2857,14 @@ public final class com/facebook/react/modules/debug/FpsDebugFrameCallback$FpsInf
28472857
}
28482858

28492859
public final class com/facebook/react/modules/debug/SourceCodeModule : com/facebook/fbreact/specs/NativeSourceCodeSpec {
2860+
public static final field Companion Lcom/facebook/react/modules/debug/SourceCodeModule$Companion;
2861+
public static final field NAME Ljava/lang/String;
28502862
public fun <init> (Lcom/facebook/react/bridge/ReactApplicationContext;)V
28512863
}
28522864

2865+
public final class com/facebook/react/modules/debug/SourceCodeModule$Companion {
2866+
}
2867+
28532868
public abstract interface class com/facebook/react/modules/debug/interfaces/DeveloperSettings {
28542869
public abstract fun addMenuItem (Ljava/lang/String;)V
28552870
public abstract fun getPackagerConnectionSettings ()Lcom/facebook/react/packagerconnection/PackagerConnectionSettings;
@@ -3144,11 +3159,16 @@ public final class com/facebook/react/modules/systeminfo/AndroidInfoHelpers {
31443159
}
31453160

31463161
public final class com/facebook/react/modules/systeminfo/AndroidInfoModule : com/facebook/fbreact/specs/NativePlatformConstantsAndroidSpec {
3162+
public static final field Companion Lcom/facebook/react/modules/systeminfo/AndroidInfoModule$Companion;
3163+
public static final field NAME Ljava/lang/String;
31473164
public fun <init> (Lcom/facebook/react/bridge/ReactApplicationContext;)V
31483165
public fun getAndroidID ()Ljava/lang/String;
31493166
public fun invalidate ()V
31503167
}
31513168

3169+
public final class com/facebook/react/modules/systeminfo/AndroidInfoModule$Companion {
3170+
}
3171+
31523172
public final class com/facebook/react/modules/systeminfo/ReactNativeVersion {
31533173
public static final field INSTANCE Lcom/facebook/react/modules/systeminfo/ReactNativeVersion;
31543174
public static final field VERSION Ljava/util/Map;

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/core/ExceptionsManagerModule.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,4 +65,8 @@ public open class ExceptionsManagerModule(private val devSupportManager: DevSupp
6565
devSupportManager.hideRedboxDialog()
6666
}
6767
}
68+
69+
public companion object {
70+
public const val NAME: String = NativeExceptionsManagerSpec.NAME
71+
}
6872
}

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/debug/DevMenuModule.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,8 @@ internal class DevMenuModule(
3939
override fun setHotLoadingEnabled(enabled: Boolean) {
4040
devSupportManager.setHotModuleReplacementEnabled(enabled)
4141
}
42+
43+
public companion object {
44+
public const val NAME: String = NativeDevMenuSpec.NAME
45+
}
4246
}

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/debug/DevSettingsModule.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,4 +72,8 @@ public class DevSettingsModule(
7272
override fun removeListeners(count: Double) {
7373
// iOS only
7474
}
75+
76+
public companion object {
77+
public const val NAME: String = NativeDevSettingsSpec.NAME
78+
}
7579
}

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/debug/SourceCodeModule.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,8 @@ public class SourceCodeModule(reactContext: ReactApplicationContext) :
2424
Assertions.assertNotNull<String>(
2525
getReactApplicationContext().getSourceURL(),
2626
"No source URL loaded, have you initialised the instance?"))
27+
28+
public companion object {
29+
public const val NAME: String = NativeSourceCodeSpec.NAME
30+
}
2731
}

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/deviceinfo/DeviceInfoModule.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,4 +73,8 @@ internal class DeviceInfoModule(reactContext: ReactApplicationContext) :
7373
super.invalidate()
7474
reactApplicationContext?.removeLifecycleEventListener(this)
7575
}
76+
77+
public companion object {
78+
public const val NAME: String = NativeDeviceInfoSpec.NAME
79+
}
7680
}

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/AndroidInfoModule.kt

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,6 @@ import com.facebook.react.module.annotations.ReactModule
2525
public class AndroidInfoModule(reactContext: ReactApplicationContext) :
2626
NativePlatformConstantsAndroidSpec(reactContext) {
2727

28-
private companion object {
29-
private const val IS_TESTING = "IS_TESTING"
30-
private const val IS_DISABLE_ANIMATIONS = "IS_DISABLE_ANIMATIONS"
31-
}
32-
3328
/**
3429
* See:
3530
* https://developer.android.com/reference/android/app/UiModeManager.html#getCurrentModeType()
@@ -84,4 +79,10 @@ public class AndroidInfoModule(reactContext: ReactApplicationContext) :
8479
false
8580
}
8681
}
82+
83+
public companion object {
84+
public const val NAME: String = "NativePlatformConstantsAndroidSpec.NAME"
85+
private const val IS_TESTING = "IS_TESTING"
86+
private const val IS_DISABLE_ANIMATIONS = "IS_DISABLE_ANIMATIONS"
87+
}
8788
}

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/CoreReactPackage.java

Lines changed: 0 additions & 138 deletions
This file was deleted.
Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
/*
2+
* Copyright (c) Meta Platforms, Inc. and affiliates.
3+
*
4+
* This source code is licensed under the MIT license found in the
5+
* LICENSE file in the root directory of this source tree.
6+
*/
7+
8+
package com.facebook.react.runtime
9+
10+
import com.facebook.react.BaseReactPackage
11+
import com.facebook.react.bridge.NativeModule
12+
import com.facebook.react.bridge.ReactApplicationContext
13+
import com.facebook.react.common.ClassFinder
14+
import com.facebook.react.devsupport.LogBoxModule
15+
import com.facebook.react.devsupport.interfaces.DevSupportManager
16+
import com.facebook.react.module.annotations.ReactModule
17+
import com.facebook.react.module.annotations.ReactModuleList
18+
import com.facebook.react.module.model.ReactModuleInfo
19+
import com.facebook.react.module.model.ReactModuleInfoProvider
20+
import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler
21+
import com.facebook.react.modules.core.DeviceEventManagerModule
22+
import com.facebook.react.modules.core.ExceptionsManagerModule
23+
import com.facebook.react.modules.debug.DevMenuModule
24+
import com.facebook.react.modules.debug.DevSettingsModule
25+
import com.facebook.react.modules.debug.SourceCodeModule
26+
import com.facebook.react.modules.deviceinfo.DeviceInfoModule
27+
import com.facebook.react.modules.systeminfo.AndroidInfoModule
28+
import java.util.HashMap
29+
30+
@ReactModuleList(
31+
nativeModules =
32+
[
33+
AndroidInfoModule::class,
34+
DeviceInfoModule::class,
35+
DevMenuModule::class,
36+
DevSettingsModule::class,
37+
SourceCodeModule::class,
38+
LogBoxModule::class,
39+
DeviceEventManagerModule::class,
40+
ExceptionsManagerModule::class])
41+
internal class CoreReactPackage(
42+
private val devSupportManager: DevSupportManager,
43+
private val hardwareBackBtnHandler: DefaultHardwareBackBtnHandler
44+
) : BaseReactPackage() {
45+
46+
override fun getModule(name: String, reactContext: ReactApplicationContext): NativeModule? =
47+
when (name) {
48+
AndroidInfoModule.NAME -> AndroidInfoModule(reactContext)
49+
DeviceInfoModule.NAME -> DeviceInfoModule(reactContext)
50+
SourceCodeModule.NAME -> SourceCodeModule(reactContext)
51+
DevMenuModule.NAME -> DevMenuModule(reactContext, devSupportManager)
52+
DevSettingsModule.NAME -> DevSettingsModule(reactContext, devSupportManager)
53+
DeviceEventManagerModule.NAME ->
54+
DeviceEventManagerModule(reactContext, hardwareBackBtnHandler)
55+
56+
LogBoxModule.NAME -> LogBoxModule(reactContext, devSupportManager)
57+
ExceptionsManagerModule.NAME -> ExceptionsManagerModule(devSupportManager)
58+
else -> null
59+
}
60+
61+
override fun getReactModuleInfoProvider(): ReactModuleInfoProvider {
62+
if (!ClassFinder.canLoadClassesFromAnnotationProcessors()) {
63+
return fallbackForMissingClass()
64+
}
65+
try {
66+
val reactModuleInfoProviderClass =
67+
ClassFinder.findClass("${CoreReactPackage::class.java.name}$\$ReactModuleInfoProvider")
68+
@Suppress("DEPRECATION")
69+
return reactModuleInfoProviderClass?.newInstance() as? ReactModuleInfoProvider
70+
?: fallbackForMissingClass()
71+
} catch (e: Exception) {
72+
when (e) {
73+
is ClassNotFoundException -> return fallbackForMissingClass()
74+
is InstantiationException,
75+
is IllegalAccessException ->
76+
throw RuntimeException(
77+
"No ReactModuleInfoProvider for ${CoreReactPackage::class.java.name}$\$ReactModuleInfoProvider",
78+
e)
79+
else -> throw e
80+
}
81+
}
82+
}
83+
84+
private fun fallbackForMissingClass(): ReactModuleInfoProvider {
85+
// In OSS case, the annotation processor does not run. We fall back on creating this byhand
86+
val moduleList: Array<Class<out NativeModule>> =
87+
arrayOf<Class<out NativeModule>>(
88+
AndroidInfoModule::class.java,
89+
DeviceInfoModule::class.java,
90+
SourceCodeModule::class.java,
91+
DevMenuModule::class.java,
92+
DevSettingsModule::class.java,
93+
DeviceEventManagerModule::class.java,
94+
LogBoxModule::class.java,
95+
ExceptionsManagerModule::class.java,
96+
)
97+
val reactModuleInfoMap: MutableMap<String, ReactModuleInfo> = HashMap()
98+
for (moduleClass in moduleList) {
99+
val reactModule = moduleClass.getAnnotation(ReactModule::class.java)
100+
if (reactModule != null) {
101+
reactModuleInfoMap[reactModule.name] =
102+
ReactModuleInfo(
103+
reactModule.name,
104+
moduleClass.name,
105+
reactModule.canOverrideExistingModule,
106+
reactModule.needsEagerInit,
107+
reactModule.isCxxModule,
108+
ReactModuleInfo.classIsTurboModule(moduleClass))
109+
}
110+
}
111+
return ReactModuleInfoProvider { reactModuleInfoMap }
112+
}
113+
}

0 commit comments

Comments
 (0)