From 63dea206ff1aefc5aca2560affa94bc93475b637 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateo=20Guzm=C3=A1n?= Date: Thu, 27 Feb 2025 05:23:56 -0800 Subject: [PATCH] Migrate `CxxModuleWrapper` & `DefaultJSExceptionHandler` to Kotlin (#49706) Summary: Migrating two more classes from com.facebook.react.bridge to Kotlin, `CxxModuleWrapper` & `DefaultJSExceptionHandler`. ## Changelog: [INTERNAL] - Migrate CxxModuleWrapper & DefaultJSExceptionHandler to Kotlin Pull Request resolved: https://github.com/facebook/react-native/pull/49706 Test Plan: ```sh yarn test-android yarn android ``` Reviewed By: cortinico Differential Revision: D70317975 Pulled By: javache fbshipit-source-id: 642d96faa131dd859f18cd811a5a223acba4c722 --- .../react-native/ReactAndroid/api/ReactAndroid.api | 2 +- .../{CxxModuleWrapper.java => CxxModuleWrapper.kt} | 13 +++++-------- ...onHandler.java => DefaultJSExceptionHandler.kt} | 14 ++++++-------- 3 files changed, 12 insertions(+), 17 deletions(-) rename packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/{CxxModuleWrapper.java => CxxModuleWrapper.kt} (52%) rename packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/{DefaultJSExceptionHandler.java => DefaultJSExceptionHandler.kt} (57%) diff --git a/packages/react-native/ReactAndroid/api/ReactAndroid.api b/packages/react-native/ReactAndroid/api/ReactAndroid.api index e35b6f848cf..9f5c34b3487 100644 --- a/packages/react-native/ReactAndroid/api/ReactAndroid.api +++ b/packages/react-native/ReactAndroid/api/ReactAndroid.api @@ -695,7 +695,7 @@ public class com/facebook/react/bridge/CxxModuleWrapperBase : com/facebook/react protected fun resetModule (Lcom/facebook/jni/HybridData;)V } -public class com/facebook/react/bridge/DefaultJSExceptionHandler : com/facebook/react/bridge/JSExceptionHandler { +public final class com/facebook/react/bridge/DefaultJSExceptionHandler : com/facebook/react/bridge/JSExceptionHandler { public fun ()V public fun handleException (Ljava/lang/Exception;)V } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/CxxModuleWrapper.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/CxxModuleWrapper.kt similarity index 52% rename from packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/CxxModuleWrapper.java rename to packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/CxxModuleWrapper.kt index 40928a6c6c0..e4c2cd627bc 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/CxxModuleWrapper.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/CxxModuleWrapper.kt @@ -5,15 +5,12 @@ * LICENSE file in the root directory of this source tree. */ -package com.facebook.react.bridge; +package com.facebook.react.bridge -import com.facebook.jni.HybridData; -import com.facebook.proguard.annotations.DoNotStrip; +import com.facebook.jni.HybridData +import com.facebook.proguard.annotations.DoNotStrip /** This does nothing interesting, except avoid breaking existing code. */ @DoNotStrip -public class CxxModuleWrapper extends CxxModuleWrapperBase { - protected CxxModuleWrapper(HybridData hd) { - super(hd); - } -} +public open class CxxModuleWrapper protected constructor(hybridData: HybridData) : + CxxModuleWrapperBase(hybridData) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/DefaultJSExceptionHandler.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/DefaultJSExceptionHandler.kt similarity index 57% rename from packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/DefaultJSExceptionHandler.java rename to packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/DefaultJSExceptionHandler.kt index c3e40d6b78b..c1cd228f29e 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/DefaultJSExceptionHandler.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/DefaultJSExceptionHandler.kt @@ -5,19 +5,17 @@ * LICENSE file in the root directory of this source tree. */ -package com.facebook.react.bridge; +package com.facebook.react.bridge /** Crashy crashy exception handler. */ -public class DefaultJSExceptionHandler implements JSExceptionHandler { - - @Override - public void handleException(Exception e) { - if (e instanceof RuntimeException) { +public class DefaultJSExceptionHandler : JSExceptionHandler { + override fun handleException(e: Exception) { + throw if (e is RuntimeException) { // Because we are rethrowing the original exception, the original stacktrace will be // preserved. - throw (RuntimeException) e; + e } else { - throw new RuntimeException(e); + RuntimeException(e) } } }