From 4ddb7c59d08ebcb0dfba11d46e7a1b6f6a8a457d Mon Sep 17 00:00:00 2001 From: Felix Oghina Date: Thu, 14 Apr 2016 03:17:31 -0700 Subject: [PATCH] move more bugreporting logic to bugreporting module Reviewed By: astreet Differential Revision: D3168205 fb-gh-sync-id: 3cf5691acb258f9741c61005bbec0a8507bc8162 fbshipit-source-id: 3cf5691acb258f9741c61005bbec0a8507bc8162 --- .../com/facebook/react/bridge/CatalystInstance.java | 1 + .../facebook/react/bridge/CatalystInstanceImpl.java | 5 +++++ .../facebook/react/bridge/NativeModuleRegistry.java | 4 ++++ .../java/com/facebook/react/bridge/ReactContext.java | 11 ++++++++++- 4 files changed, 20 insertions(+), 1 deletion(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstance.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstance.java index 28aacb95d..f85b9cf69 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstance.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstance.java @@ -52,6 +52,7 @@ public interface CatalystInstance extends MemoryPressureListener { T getJSModule(Class jsInterface); T getJSModule(ExecutorToken executorToken, Class jsInterface); + boolean hasNativeModule(Class nativeModuleInterface); T getNativeModule(Class nativeModuleInterface); Collection getNativeModules(); diff --git a/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstanceImpl.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstanceImpl.java index dfd79b9df..702b7759d 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstanceImpl.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstanceImpl.java @@ -290,6 +290,11 @@ public class CatalystInstanceImpl implements CatalystInstance { return Assertions.assertNotNull(mJSModuleRegistry).getJavaScriptModule(executorToken, jsInterface); } + @Override + public boolean hasNativeModule(Class nativeModuleInterface) { + return mJavaRegistry.hasModule(nativeModuleInterface); + } + @Override public T getNativeModule(Class nativeModuleInterface) { return mJavaRegistry.getModule(nativeModuleInterface); diff --git a/ReactAndroid/src/main/java/com/facebook/react/bridge/NativeModuleRegistry.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/NativeModuleRegistry.java index 2179a4b7a..e6e0f80a2 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/bridge/NativeModuleRegistry.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/NativeModuleRegistry.java @@ -144,6 +144,10 @@ public class NativeModuleRegistry { } } + public boolean hasModule(Class moduleInterface) { + return mModuleInstances.containsKey(moduleInterface); + } + public T getModule(Class moduleInterface) { return (T) Assertions.assertNotNull(mModuleInstances.get(moduleInterface)); } diff --git a/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java b/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java index 05d312360..60f59f52d 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java @@ -104,12 +104,21 @@ public class ReactContext extends ContextWrapper { return mCatalystInstance.getJSModule(executorToken, jsInterface); } + public boolean hasNativeModule(Class nativeModuleInterface) { + if (mCatalystInstance == null) { + throw new RuntimeException( + "Trying to call native module before CatalystInstance has been set!"); + } + return mCatalystInstance.hasNativeModule(nativeModuleInterface); + } + /** * @return the instance of the specified module interface associated with this ReactContext. */ public T getNativeModule(Class nativeModuleInterface) { if (mCatalystInstance == null) { - throw new RuntimeException("Trying to invoke JS before CatalystInstance has been set!"); + throw new RuntimeException( + "Trying to call native module before CatalystInstance has been set!"); } return mCatalystInstance.getNativeModule(nativeModuleInterface); }