Example usage for com.facebook.react.bridge ReadableMap getType

List of usage examples for com.facebook.react.bridge ReadableMap getType

Introduction

In this page you can find the example usage for com.facebook.react.bridge ReadableMap getType.

Prototype

@NonNull
    ReadableType getType(@NonNull String name);

Source Link

Usage

From source file:com.adjust.nativemodule.AdjustUtil.java

License:Open Source License

/** 
 * toObject extracts a value from a {@link ReadableMap} by its key, 
 * and returns a POJO representing that object. 
 * /*www .j a va  2  s .c om*/
 * @param readableMap The Map to containing the value to be converted 
 * @param key The key for the value to be converted 
 * @return The converted POJO 
 */
private static Object toObject(@Nullable ReadableMap readableMap, String key) {
    if (readableMap == null) {
        return null;
    }

    Object result = null;

    ReadableType readableType = readableMap.getType(key);
    switch (readableType) {
    case Null:
        result = null;
        break;
    case Boolean:
        result = readableMap.getBoolean(key);
        break;
    case Number:
        // Can be int or double. 
        double tmp = readableMap.getDouble(key);

        if (tmp == (int) tmp) {
            result = (int) tmp;
        } else {
            result = tmp;
        }

        break;
    case String:
        result = readableMap.getString(key);
        break;
    case Map:
        result = toMap(readableMap.getMap(key));
        break;
    case Array:
        result = toList(readableMap.getArray(key));
        break;
    default:
        AdjustFactory.getLogger().error("Could not convert object with key: " + key + ".");
    }

    return result;
}

From source file:com.amazonaws.reactnative.core.AWSRNClientMarshaller.java

License:Open Source License

public static Object toObject(@Nullable ReadableMap readableMap, String key) {
    if (readableMap == null) {
        return null;
    }// ww  w .  j av  a  2 s.c  o m

    Object result;

    final ReadableType readableType = readableMap.getType(key);
    switch (readableType) {
    case Null:
        result = key;
        break;
    case Boolean:
        result = readableMap.getBoolean(key);
        break;
    case Number:
        // Can be int or double.
        double tmp = readableMap.getDouble(key);
        if (tmp == (int) tmp) {
            result = (int) tmp;
        } else {
            result = tmp;
        }
        break;
    case String:
        result = readableMap.getString(key);
        break;
    case Map:
        result = readableMapToMap(readableMap.getMap(key));
        break;
    case Array:
        result = readableArrayToList(readableMap.getArray(key));
        break;
    default:
        throw new IllegalArgumentException("Could not convert object with key: " + key + ".");
    }

    return result;
}

From source file:com.boundlessgeo.spatialconnect.jsbridge.RNSpatialConnect.java

License:Apache License

private HashMap<String, Object> convertMapToHashMap(ReadableMap readableMap) {
    HashMap<String, Object> json = new HashMap<>();
    ReadableMapKeySetIterator iterator = readableMap.keySetIterator();

    while (iterator.hasNextKey()) {
        String key = iterator.nextKey();
        switch (readableMap.getType(key)) {
        case Null:
            json.put(key, null);//from w  w  w. j av a  2  s . c  om
            break;
        case Boolean:
            json.put(key, readableMap.getBoolean(key));
            break;
        case Number:
            json.put(key, readableMap.getDouble(key));
            break;
        case String:
            json.put(key, readableMap.getString(key));
            break;
        case Map:
            json.put(key, convertMapToHashMap(readableMap.getMap(key)));
            break;
        case Array:
            json.put(key, convertArrayToArrayList(readableMap.getArray(key)));
            break;
        }
    }

    return json;
}

From source file:com.boundlessgeo.spatialconnect.jsbridge.SCBridge.java

License:Apache License

private static JSONObject convertMapToJson(ReadableMap readableMap) {
    JSONObject object = new JSONObject();
    ReadableMapKeySetIterator iterator = readableMap.keySetIterator();
    try {// ww  w. j  ava 2  s  .c  o  m

        while (iterator.hasNextKey()) {
            String key = iterator.nextKey();
            switch (readableMap.getType(key)) {
            case Null:
                object.put(key, JSONObject.NULL);
                break;
            case Boolean:
                object.put(key, readableMap.getBoolean(key));
                break;
            case Number:
                object.put(key, readableMap.getDouble(key));
                break;
            case String:
                object.put(key, readableMap.getString(key));
                break;
            case Map:
                object.put(key, convertMapToJson(readableMap.getMap(key)));
                break;
            case Array:
                object.put(key, convertArrayToJson(readableMap.getArray(key)));
                break;
            }
        }
    } catch (JSONException e) {
        Log.e(LOG_TAG, "Could not convert to json");
        e.printStackTrace();
    }
    return object;
}

From source file:com.farmisen.react_native_file_uploader.RCTFileUploaderModule.java

License:Open Source License

private void uploadFile(String path, ReadableMap settings, Callback callback) {
    HttpURLConnection connection = null;
    FileUploadCountingOutputStream outputStream = null;
    InputStream inputStream = null;

    String boundary = "*****" + UUID.randomUUID().toString() + "*****";

    try {//  ww  w.ja  va 2s .co  m
        URL url = new URL(settings.getString(UPLOAD_URL_FIELD));
        connection = (HttpURLConnection) url.openConnection();

        connection.setDoInput(true);
        connection.setDoOutput(true);
        connection.setUseCaches(false);

        String method = getStringParam(settings, METHOD_FIELD, "POST");
        connection.setRequestMethod(method);
        connection.setRequestProperty("Connection", "Keep-Alive");
        connection.setRequestProperty("User-Agent", "React Native File Uploader Android HTTP Client");
        connection.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);

        String contentType = getStringParam(settings, CONTENT_TYPE_FIELD, "application/octet-stream");
        String fileName = getStringParam(settings, FILE_NAME_FIELD, this.filenameForContentType(contentType));
        String fieldName = getStringParam(settings, FIELD_NAME_FIELD, "file");

        File file = new File(path);
        FileInputStream fileInputStream = new FileInputStream(file);
        int bytesRead, bytesAvailable, bufferSize;
        byte[] buffer;
        int maxBufferSize = MAX_BUFFER_SIZE;

        outputStream = new FileUploadCountingOutputStream(new DataOutputStream(connection.getOutputStream()),
                file.length(), settings.getString(URI_FIELD), this);
        outputStream.writeBytes(TWO_HYPHENS + boundary + LINE_END);
        outputStream.writeBytes("Content-Disposition: form-data; name=\"" + fieldName + "\"; filename=\""
                + fileName + "\"" + LINE_END);
        outputStream.writeBytes("Content-Type: " + contentType + LINE_END);
        outputStream.writeBytes("Content-Transfer-Encoding: binary" + LINE_END);

        outputStream.writeBytes(LINE_END);
        bytesAvailable = fileInputStream.available();
        bufferSize = Math.min(bytesAvailable, maxBufferSize);
        buffer = new byte[bufferSize];
        bytesRead = fileInputStream.read(buffer, 0, bufferSize);
        while (bytesRead > 0) {
            outputStream.write(buffer, 0, bufferSize);
            bytesAvailable = fileInputStream.available();
            bufferSize = Math.min(bytesAvailable, maxBufferSize);
            bytesRead = fileInputStream.read(buffer, 0, bufferSize);
        }
        outputStream.writeBytes(LINE_END);

        ReadableMap params = getMapParam(settings, "data", Arguments.createMap());
        ReadableMapKeySetIterator keys = params.keySetIterator();
        while (keys.hasNextKey()) {
            String key = keys.nextKey();
            ReadableType type = params.getType(key);
            String value = null;
            switch (type) {
            case String:
                value = params.getString(key);
                break;
            case Number:
                value = Integer.toString(params.getInt(key));
                break;
            default:
                callback.invoke(type.toString() + " type not supported.", null);
                break;
            }

            outputStream.writeBytes(TWO_HYPHENS + boundary + LINE_END);
            outputStream.writeBytes("Content-Disposition: form-data; name=\"" + key + "\"" + LINE_END);
            outputStream.writeBytes("Content-Type: text/plain" + LINE_END);
            outputStream.writeBytes(LINE_END + value + LINE_END);
        }

        outputStream.writeBytes(TWO_HYPHENS + boundary + TWO_HYPHENS + LINE_END);

        inputStream = connection.getInputStream();
        String responseBody = this.streamToString(inputStream);

        fileInputStream.close();
        inputStream.close();
        outputStream.flush();
        outputStream.close();

        WritableMap result = Arguments.createMap();
        result.putString("data", responseBody);
        result.putInt("status", connection.getResponseCode());
        callback.invoke(null, result);
    } catch (Exception e) {
        callback.invoke(e.getLocalizedMessage(), null);
    }
}

From source file:com.hijridatepicker.HijriDatePickerAndroidModule.java

License:Open Source License

private boolean parseOptionsWithKey(String ARG_KEY, ReadableMap options, Bundle args, Promise promise) {
    ReadableType argDateType = options.getType(ARG_KEY);
    if (ReadableType.String.equals(argDateType)) {
        try {/*w ww. ja v  a  2 s .  c om*/
            long milliSeconds = 0;
            milliSeconds = (long) convertHijriDateToGregorianMilliseconds(options.getString(ARG_KEY));
            args.putLong(ARG_KEY, milliSeconds);
            return true;
        } catch (PatternSyntaxException | IndexOutOfBoundsException | NumberFormatException e) {
            promise.reject(ERROR_PARSING_OPTIONS, "Exception happened while parsing " + ARG_KEY
                    + " we only accept object of Date or String with the format \"dd-MM-yyyy\" in Hijri");
            return false;
        }
    } else if (ReadableType.Number.equals(argDateType)) {
        args.putLong(ARG_KEY, (long) options.getDouble(ARG_KEY));
        return true;
    } else {
        promise.reject(ERROR_PARSING_OPTIONS, "Exception happened while parsing " + ARG_KEY
                + " we only accept object of Date or String with the format \"dd-MM-yyyy\" in Hijri");
        return false;
    }
}

From source file:com.ibatimesheet.RNJSONUtils.java

License:Apache License

public static JSONObject convertMapToJson(ReadableMap readableMap) throws JSONException {
    JSONObject object = new JSONObject();
    ReadableMapKeySetIterator iterator = readableMap.keySetIterator();
    while (iterator.hasNextKey()) {
        String key = iterator.nextKey();
        switch (readableMap.getType(key)) {
        case Null:
            object.put(key, JSONObject.NULL);
            break;
        case Boolean:
            object.put(key, readableMap.getBoolean(key));
            break;
        case Number:
            object.put(key, readableMap.getDouble(key));
            break;
        case String:
            object.put(key, readableMap.getString(key));
            break;
        case Map:
            object.put(key, convertMapToJson(readableMap.getMap(key)));
            break;
        case Array:
            object.put(key, convertArrayToJson(readableMap.getArray(key)));
            break;
        }/*w w  w. j a  v a2  s  .  c  o  m*/
    }
    return object;
}

From source file:com.microsoft.appcenter.reactnative.analytics.ReactNativeUtils.java

License:Open Source License

public static JSONObject convertReadableMapToJsonObject(ReadableMap map) throws JSONException {
    JSONObject jsonObj = new JSONObject();
    ReadableMapKeySetIterator it = map.keySetIterator();
    while (it.hasNextKey()) {
        String key = it.nextKey();
        ReadableType type = map.getType(key);
        switch (type) {
        case Map:
            jsonObj.put(key, convertReadableMapToJsonObject(map.getMap(key)));
            break;
        case Array:
            jsonObj.put(key, convertReadableArrayToJsonArray(map.getArray(key)));
            break;
        case String:
            jsonObj.put(key, map.getString(key));
            break;
        case Number:
            Double number = map.getDouble(key);
            if ((number == Math.floor(number)) && !Double.isInfinite(number)) {
                jsonObj.put(key, number.longValue());
            } else {
                jsonObj.put(key, number.doubleValue());
            }//from   w  w w .  j  av a 2s. com

            break;
        case Boolean:
            jsonObj.put(key, map.getBoolean(key));
            break;
        default:
            jsonObj.put(key, null);
            break;
        }
    }

    return jsonObj;
}

From source file:com.microsoft.appcenter.reactnative.analytics.ReactNativeUtils.java

License:Open Source License

public static Map<String, String> convertReadableMapToStringMap(ReadableMap map) throws JSONException {
    Map<String, String> stringMap = new HashMap<>();
    ReadableMapKeySetIterator it = map.keySetIterator();
    while (it.hasNextKey()) {
        String key = it.nextKey();
        ReadableType type = map.getType(key);
        // Only support storing strings. Non-string data must be stringified in JS.
        if (type == ReadableType.String) {
            stringMap.put(key, map.getString(key));
        }/*from  w ww  .  j a  va2  s  . c o  m*/
    }

    return stringMap;
}

From source file:com.microsoft.appcenter.reactnative.appcenter.ReactNativeUtils.java

License:Open Source License

private static Object toObject(@Nullable ReadableMap readableMap, String key) {
    if (readableMap == null) {
        return null;
    }//from   w w  w.  j  a  v a2 s.  c  o m

    Object result;
    ReadableType readableType = readableMap.getType(key);
    switch (readableType) {
    case Null:
        result = null;
        break;
    case Boolean:
        result = readableMap.getBoolean(key);
        break;
    case Number:
        // Can be int or double.
        double tmp = readableMap.getDouble(key);
        if (tmp == (int) tmp) {
            result = (int) tmp;
        } else {
            result = tmp;
        }
        break;
    case String:
        result = readableMap.getString(key);
        break;
    case Map:
        result = toMap(readableMap.getMap(key));
        break;
    //case Array:
    //    result = toList(readableMap.getArray(key));
    //    break;
    default:
        throw new IllegalArgumentException("Could not convert object with key: " + key + ".");
    }

    return result;
}