Make extractor generic

Differential Revision: D2605494

fb-gh-sync-id: 37e298598c07221f75250a309b283fae319298af
This commit is contained in:
Alexander Blom 2015-11-02 03:24:21 -08:00 committed by facebook-github-bot-7
parent 15c53f7563
commit 839756b6d4

View File

@ -51,94 +51,94 @@ public abstract class BaseJavaModule implements NativeModule {
static final public String METHOD_TYPE_REMOTE = "remote"; static final public String METHOD_TYPE_REMOTE = "remote";
static final public String METHOD_TYPE_REMOTE_ASYNC = "remoteAsync"; static final public String METHOD_TYPE_REMOTE_ASYNC = "remoteAsync";
private static abstract class ArgumentExtractor { private static abstract class ArgumentExtractor<T> {
public int getJSArgumentsNeeded() { public int getJSArgumentsNeeded() {
return 1; return 1;
} }
public abstract @Nullable Object extractArgument( public abstract @Nullable T extractArgument(
CatalystInstance catalystInstance, ReadableNativeArray jsArguments, int atIndex); CatalystInstance catalystInstance, ReadableNativeArray jsArguments, int atIndex);
} }
static final private ArgumentExtractor ARGUMENT_EXTRACTOR_BOOLEAN = new ArgumentExtractor() { static final private ArgumentExtractor<Boolean> ARGUMENT_EXTRACTOR_BOOLEAN =
new ArgumentExtractor<Boolean>() {
@Override @Override
public Object extractArgument( public Boolean extractArgument(
CatalystInstance catalystInstance, ReadableNativeArray jsArguments, int atIndex CatalystInstance catalystInstance, ReadableNativeArray jsArguments, int atIndex) {
) { return jsArguments.getBoolean(atIndex);
return Boolean.valueOf(jsArguments.getBoolean(atIndex));
} }
}; };
static final private ArgumentExtractor ARGUMENT_EXTRACTOR_DOUBLE = new ArgumentExtractor() { static final private ArgumentExtractor<Double> ARGUMENT_EXTRACTOR_DOUBLE =
new ArgumentExtractor<Double>() {
@Override @Override
public Object extractArgument( public Double extractArgument(
CatalystInstance catalystInstance, ReadableNativeArray jsArguments, int atIndex CatalystInstance catalystInstance, ReadableNativeArray jsArguments, int atIndex) {
) { return jsArguments.getDouble(atIndex);
return Double.valueOf(jsArguments.getDouble(atIndex));
} }
}; };
static final private ArgumentExtractor ARGUMENT_EXTRACTOR_FLOAT = new ArgumentExtractor() { static final private ArgumentExtractor<Float> ARGUMENT_EXTRACTOR_FLOAT =
new ArgumentExtractor<Float>() {
@Override @Override
public Object extractArgument( public Float extractArgument(
CatalystInstance catalystInstance, ReadableNativeArray jsArguments, int atIndex CatalystInstance catalystInstance, ReadableNativeArray jsArguments, int atIndex) {
) { return (float) jsArguments.getDouble(atIndex);
return Float.valueOf((float) jsArguments.getDouble(atIndex));
} }
}; };
static final private ArgumentExtractor ARGUMENT_EXTRACTOR_INTEGER = new ArgumentExtractor() { static final private ArgumentExtractor<Integer> ARGUMENT_EXTRACTOR_INTEGER =
new ArgumentExtractor<Integer>() {
@Override @Override
public Object extractArgument( public Integer extractArgument(
CatalystInstance catalystInstance, ReadableNativeArray jsArguments, int atIndex CatalystInstance catalystInstance, ReadableNativeArray jsArguments, int atIndex) {
) { return (int) jsArguments.getDouble(atIndex);
return Integer.valueOf((int) jsArguments.getDouble(atIndex));
} }
}; };
static final private ArgumentExtractor ARGUMENT_EXTRACTOR_STRING = new ArgumentExtractor() { static final private ArgumentExtractor<String> ARGUMENT_EXTRACTOR_STRING =
new ArgumentExtractor<String>() {
@Override @Override
public Object extractArgument( public String extractArgument(
CatalystInstance catalystInstance, ReadableNativeArray jsArguments, int atIndex CatalystInstance catalystInstance, ReadableNativeArray jsArguments, int atIndex) {
) {
return jsArguments.getString(atIndex); return jsArguments.getString(atIndex);
} }
}; };
static final private ArgumentExtractor ARGUMENT_EXTRACTOR_ARRAY = new ArgumentExtractor() { static final private ArgumentExtractor<ReadableNativeArray> ARGUMENT_EXTRACTOR_ARRAY =
new ArgumentExtractor<ReadableNativeArray>() {
@Override @Override
public Object extractArgument( public ReadableNativeArray extractArgument(
CatalystInstance catalystInstance, ReadableNativeArray jsArguments, int atIndex CatalystInstance catalystInstance, ReadableNativeArray jsArguments, int atIndex) {
) {
return jsArguments.getArray(atIndex); return jsArguments.getArray(atIndex);
} }
}; };
static final private ArgumentExtractor ARGUMENT_EXTRACTOR_MAP = new ArgumentExtractor() { static final private ArgumentExtractor<ReadableMap> ARGUMENT_EXTRACTOR_MAP =
new ArgumentExtractor<ReadableMap>() {
@Override @Override
public Object extractArgument( public ReadableMap extractArgument(
CatalystInstance catalystInstance, ReadableNativeArray jsArguments, int atIndex CatalystInstance catalystInstance, ReadableNativeArray jsArguments, int atIndex) {
) {
return jsArguments.getMap(atIndex); return jsArguments.getMap(atIndex);
} }
}; };
static final private ArgumentExtractor ARGUMENT_EXTRACTOR_CALLBACK = new ArgumentExtractor() { static final private ArgumentExtractor<Callback> ARGUMENT_EXTRACTOR_CALLBACK =
new ArgumentExtractor<Callback>() {
@Override @Override
public @Nullable Object extractArgument( public @Nullable Callback extractArgument(
CatalystInstance catalystInstance, ReadableNativeArray jsArguments, int atIndex CatalystInstance catalystInstance, ReadableNativeArray jsArguments, int atIndex) {
) {
if (jsArguments.isNull(atIndex)) { if (jsArguments.isNull(atIndex)) {
return null; return null;
} } else {
else {
int id = (int) jsArguments.getDouble(atIndex); int id = (int) jsArguments.getDouble(atIndex);
return new CallbackImpl(catalystInstance, id); return new CallbackImpl(catalystInstance, id);
} }
} }
}; };
static final private ArgumentExtractor ARGUMENT_EXTRACTOR_PROMISE = new ArgumentExtractor() { static final private ArgumentExtractor<Promise> ARGUMENT_EXTRACTOR_PROMISE =
new ArgumentExtractor<Promise>() {
@Override @Override
public int getJSArgumentsNeeded() { public int getJSArgumentsNeeded() {
return 2; return 2;
@ -147,9 +147,9 @@ public abstract class BaseJavaModule implements NativeModule {
@Override @Override
public Promise extractArgument( public Promise extractArgument(
CatalystInstance catalystInstance, ReadableNativeArray jsArguments, int atIndex) { CatalystInstance catalystInstance, ReadableNativeArray jsArguments, int atIndex) {
Callback resolve = (Callback) ARGUMENT_EXTRACTOR_CALLBACK Callback resolve = ARGUMENT_EXTRACTOR_CALLBACK
.extractArgument(catalystInstance, jsArguments, atIndex); .extractArgument(catalystInstance, jsArguments, atIndex);
Callback reject = (Callback) ARGUMENT_EXTRACTOR_CALLBACK Callback reject = ARGUMENT_EXTRACTOR_CALLBACK
.extractArgument(catalystInstance, jsArguments, atIndex + 1); .extractArgument(catalystInstance, jsArguments, atIndex + 1);
return new PromiseImpl(resolve, reject); return new PromiseImpl(resolve, reject);
} }