Files
react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/NativeModule.java
T
Dulmandakh c93cbdf1b2 Nonnull annotations for native modules (#23353)
Summary:
This adds Nonnull annotations for interfaces and classes used for native modules for Android, to improve Kotlin developer experience, but also code quality checks.

[Android] [Changed] - Nonnull annotations for native module interfaces
Pull Request resolved: https://github.com/facebook/react-native/pull/23353

Differential Revision: D14018181

Pulled By: mdvacca

fbshipit-source-id: 09a583860a6075e1d6f6df8f479369ae96497133
2019-02-09 02:40:52 -08:00

55 lines
1.8 KiB
Java

/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
package com.facebook.react.bridge;
import com.facebook.proguard.annotations.DoNotStrip;
import javax.annotation.Nonnull;
/**
* A native module whose API can be provided to JS catalyst instances. {@link NativeModule}s whose
* implementation is written in Java should extend {@link BaseJavaModule} or {@link
* ReactContextBaseJavaModule}. {@link NativeModule}s whose implementation is written in C++
* must not provide any Java code (so they can be reused on other platforms), and instead should
* register themselves using {@link CxxModuleWrapper}.
*/
@DoNotStrip
public interface NativeModule {
interface NativeMethod {
void invoke(JSInstance jsInstance, ReadableArray parameters);
String getType();
}
/**
* @return the name of this module. This will be the name used to {@code require()} this module
* from javascript.
*/
@Nonnull String getName();
/**
* This is called at the end of {@link CatalystApplicationFragment#createCatalystInstance()}
* after the CatalystInstance has been created, in order to initialize NativeModules that require
* the CatalystInstance or JS modules.
*/
void initialize();
/**
* Return true if you intend to override some other native module that was registered e.g. as part
* of a different package (such as the core one). Trying to override without returning true from
* this method is considered an error and will throw an exception during initialization. By
* default all modules return false.
*/
boolean canOverrideExistingModule();
/**
* Called before {CatalystInstance#onHostDestroy}
*/
void onCatalystInstanceDestroy();
}