Add @ReactModule annotation

Reviewed By: astreet

Differential Revision: D3310686

fbshipit-source-id: ec2dc7fdf2dfbb3eedde667d7228fc3241860e35
This commit is contained in:
Aaron Chiu
2016-08-09 01:58:19 -07:00
committed by Facebook Github Bot 2
parent 24236a8926
commit 0561336ae4
2 changed files with 92 additions and 1 deletions

View File

@@ -9,7 +9,10 @@
package com.facebook.react.bridge;
import com.facebook.common.logging.FLog;
import com.facebook.infer.annotation.Assertions;
import com.facebook.react.bridge.annotations.ReactModule;
import com.facebook.react.common.ReactConstants;
import com.facebook.systrace.Systrace;
import com.facebook.systrace.SystraceMessage;
@@ -462,6 +465,17 @@ public abstract class BaseJavaModule implements NativeModule {
writer.endObject();
}
@Override
public String getName() {
ReactModule module = getClass().getAnnotation(ReactModule.class);
if (module == null) {
throw new IllegalStateException(
getClass().getSimpleName() +
"module must have @ReactModule annotation or override getName()");
}
return module.name();
}
@Override
public void initialize() {
// do nothing
@@ -469,6 +483,7 @@ public abstract class BaseJavaModule implements NativeModule {
@Override
public boolean canOverrideExistingModule() {
// TODO(t11394819): Make this final and use annotation
return false;
}
@@ -484,7 +499,15 @@ public abstract class BaseJavaModule implements NativeModule {
@Override
public boolean supportsWebWorkers() {
return false;
ReactModule module = getClass().getAnnotation(ReactModule.class);
if (module == null) {
FLog.w(
ReactConstants.TAG,
"Module " + getName() +
" lacks @ReactModule annotation, assuming false for supportsWebWorkers()");
return false;
}
return module.supportsWebWorkers();
}
private static char paramTypeToChar(Class paramClass) {