Example usage for org.apache.cordova CordovaArgs opt

List of usage examples for org.apache.cordova CordovaArgs opt

Introduction

In this page you can find the example usage for org.apache.cordova CordovaArgs opt.

Prototype

public Object opt(int index) 

Source Link

Usage

From source file:com.microsoft.c3p.cordova.C3PCordovaPlugin.java

License:Open Source License

@Override
public boolean execute(String action, CordovaArgs args, final CallbackContext callbackContext)
        throws JSONException {
    try {// ww w  . j a v  a 2s  . co  m
        if (JavaScriptBridge.CallType.GET_STATIC_PROPERTY.equals(action)) {
            String type = args.getString(0);
            String property = args.getString(1);
            JavaScriptValue value = this.bridge.getStaticProperty(type, property);
            C3PCordovaPlugin.returnResult(value, callbackContext);
        } else if (JavaScriptBridge.CallType.SET_STATIC_PROPERTY.equals(action)) {
            String type = args.getString(0);
            String property = args.getString(1);
            Object value = args.opt(2);
            this.bridge.setStaticProperty(type, property, JSValue.fromObject(value));
            callbackContext.success();
        } else if (JavaScriptBridge.CallType.INVOKE_STATIC_METHOD.equals(action)) {
            String type = args.getString(0);
            String method = args.getString(1);
            JSONArray arguments = args.getJSONArray(2);
            ChainablePromise<JavaScriptValue> returnValue = this.bridge.invokeStaticMethod(type, method,
                    JSValue.fromObject(arguments));
            C3PCordovaPlugin.returnFutureResult(returnValue, callbackContext, false);
        } else if (JavaScriptBridge.CallType.ADD_STATIC_EVENT_LISTENER.equals(action)) {
            String type = args.getString(0);
            String event = args.getString(1);
            Consumer<JavaScriptValue> eventListener = new Consumer<JavaScriptValue>() {
                @Override
                public void accept(JavaScriptValue eventObject) {
                    C3PCordovaPlugin.returnResult(eventObject, callbackContext, true);
                }
            };
            this.bridge.addStaticEventListener(type, event, eventListener);
            this.eventListenerMap.put(callbackContext.getCallbackId(), eventListener);
            C3PCordovaPlugin.returnResult(JSValue.fromString(callbackContext.getCallbackId()), callbackContext,
                    true);
        } else if (JavaScriptBridge.CallType.REMOVE_STATIC_EVENT_LISTENER.equals(action)) {
            String type = args.getString(0);
            String event = args.getString(1);
            String registrationToken = args.getString(2);
            Consumer<JavaScriptValue> eventListener = this.eventListenerMap.get(registrationToken);
            if (eventListener != null) {
                this.bridge.removeStaticEventListener(type, event, eventListener);
                this.eventListenerMap.remove(registrationToken);
            } else {
                Log.w(TAG, "Event registration not found for callbackId: " + registrationToken);
            }
            callbackContext.success();
        } else if (JavaScriptBridge.CallType.CREATE_INSTANCE.equals(action)) {
            String type = args.getString(0);
            JSONArray arguments = args.getJSONArray(1);
            JavaScriptValue instance = this.bridge.createInstance(type, JSValue.fromObject(arguments));
            callbackContext.success((JSONObject) JSValue.toObject(instance));
        } else if (JavaScriptBridge.CallType.RELEASE_INSTANCE.equals(action)) {
            JSONObject instance = args.getJSONObject(0);
            this.bridge.releaseInstance(JSValue.fromObject(instance));
            callbackContext.success();
        } else if (JavaScriptBridge.CallType.GET_PROPERTY.equals(action)) {
            JSONObject instance = args.getJSONObject(0);
            String property = args.getString(1);
            JavaScriptValue value = this.bridge.getProperty(JSValue.fromObject(instance), property);
            C3PCordovaPlugin.returnResult(value, callbackContext);
        } else if (JavaScriptBridge.CallType.SET_PROPERTY.equals(action)) {
            JSONObject instance = args.getJSONObject(0);
            String property = args.getString(1);
            Object value = args.opt(2);
            this.bridge.setProperty(JSValue.fromObject(instance), property, JSValue.fromObject(value));
            callbackContext.success();
        } else if (JavaScriptBridge.CallType.INVOKE_METHOD.equals(action)) {
            JSONObject instance = args.getJSONObject(0);
            String method = args.getString(1);
            JSONArray arguments = args.getJSONArray(2);
            ChainablePromise<JavaScriptValue> returnValue = this.bridge
                    .invokeMethod(JSValue.fromObject(instance), method, JSValue.fromObject(arguments));
            C3PCordovaPlugin.returnFutureResult(returnValue, callbackContext, false);
        } else if (JavaScriptBridge.CallType.ADD_EVENT_LISTENER.equals(action)) {
            JSONObject instance = args.getJSONObject(0);
            String event = args.getString(1);
            Consumer<JavaScriptValue> eventListener = new Consumer<JavaScriptValue>() {
                @Override
                public void accept(JavaScriptValue eventObject) {
                    C3PCordovaPlugin.returnResult(eventObject, callbackContext, true);
                }
            };
            this.bridge.addEventListener(JSValue.fromObject(instance), event, eventListener);
            this.eventListenerMap.put(callbackContext.getCallbackId(), eventListener);
            C3PCordovaPlugin.returnResult(JSValue.fromString(callbackContext.getCallbackId()), callbackContext,
                    true);
        } else if (JavaScriptBridge.CallType.REMOVE_EVENT_LISTENER.equals(action)) {
            JSONObject instance = args.getJSONObject(0);
            String event = args.getString(1);
            String registrationToken = args.getString(2);
            Consumer<JavaScriptValue> eventListener = this.eventListenerMap.get(registrationToken);
            if (eventListener != null) {
                this.bridge.removeEventListener(JSValue.fromObject(instance), event, eventListener);
                this.eventListenerMap.remove(registrationToken);
            } else {
                Log.w(TAG, "Event registration not found for callbackId: " + registrationToken);
            }
            callbackContext.success();
        } else {
            throw new IllegalArgumentException("Invalid action: " + action);
        }
    } catch (IllegalArgumentException iaex) {
        throw new RuntimeException(iaex);
    } catch (InvocationTargetException itex) {
        throw new RuntimeException(itex.getTargetException());
    }
    return true;
}