January 26, 2018

Resolving or Invoking a Method Expression from a Managed Bean in Oracle MAF

[MAF 2.3.1]

I developed a mobile app using Oracle Mobile Application Framework (MAF) in which I had a requirement to invoke a method from a managed bean method. Below is the code snippet worked for me to do this.


public static Object resloveMethodExpression(String expression,
                                             Class returnType,
                                             Class[] argTypes,
                                             Object[] argValues) {
  MethodExpression methodExpression = AdfmfJavaUtilities.getMethodExpression(expression,
                                                                             returnType,
                                                                             argTypes);
  return methodExpression.invoke(AdfmfJavaUtilities.getAdfELContext(), argValues);
}


Where,
  •  expression:  the managed bean method EL expression
  • returnType:  Class name of the return value of the method, can be null if it is void
  • argTypes: Class names of the input parameters need to be passed to the method if any. It would be null if there are no parameters
  • argValues: Input parameter values to be passed to the method if any. It would be null if there are no parameters


December 3, 2017

Issue: Simulator is running very slow on MAC

The Simulator is responding very slow on my MAC book while running apps. The issue here I found is somehow slow animations are enabled in the simulator. The solution for this is press "Command+T" on the simulator.  It may be simple and funny, but it worked for me. Try yourself :).

October 14, 2017

Working with Oracle MCS Database Management API

­­­­In Oracle Mobile Cloud Service (MCS) "Database Management API" is another API in addition to "Database Access API" which lets you view table metadata, and create, drop, and re-create tables. This post is not to explain about the API but to see how to access it from outside. Please click here to know more about the API.

The good part of this API is, you can access this API from outside of MCS using any rest client tool. 
In this example, I am using Postman.

To access the “Database Management API” from outside, you need to pass MCS login credentials instead of mobile backend authentication details along with mobile backend id to every API.

Below is a screenshot for your reference where it is fetching meta data of my table “MY_CUSTOMER”. Note that the table name here is case sensitive.


Below is the full output of the above GET operation to fetch meta data of a table "MY_CUSTOMER".

{
    "name": "MY_CUSTOMER",
    "primaryKeys": [
        "id"
    ],
    "requiredColumns": [
        "id"
    ],
    "columns": [
        {
            "name": "id",
            "type": "decimal"
        },
        {
            "name": "vehiclenum",
            "size": 6,
            "type": "string"
        },
        {
            "name": "customermobile",
            "size": 14,
            "type": "string"
        },
        {
            "name": "customernum",
            "size": 7,
            "type": "integer"
        },
        {
            "name": "customername",
            "size": 8,
            "type": "string"
        },
        {
            "name": "vehicleserial",
            "size": 9,
            "type": "string"
        },
        {
            "name": "createdBy",
            "size": 80,
            "type": "string"
        },
        {
            "name": "createdOn",
            "type": "dateTime"
        },
        {
            "name": "modifiedBy",
            "size": 80,
            "type": "string"
        },
        {
            "name": "modifiedOn",
            "type": "dateTime"
        }
    ]
}

Below are the other operations and APIs allowed with Database Management API.
  • To list all the tables in the MCS database:

URL: https://<MCS API URI>/mobile/system/databaseManagement/tables
Operation: GET
  •       To list meta data of a table in the MCS database:

URL: https://<MCS API URI>/mobile/system/databaseManagement/tables/<Table Name>
Operation: GET
  •     To drop table in the MCS database:

URL: https://<MCS API URI>/mobile/system/databaseManagement/tables/<Table Name>
Operation: DELETE
  •    To create a new table in the MCS database:

URL: https://<MCS API URI>/mobile/system/databaseManagement/tables
Operation: POST
Input:
{ "name" : "MY_CUSTOMER",
  "columns": [
    {"name": " id", "type": "integer", "size": 3},
    {"name": " vehiclenum", "type": "string", "size": 50},
    {"name": " customermobile", "type": "string"},
    {"name": " customernum", "type": "integer", "size": 3},
    {"name": " customername", "type": "string"},
    {"name": " vehicleserial", "type": "string"}
],
  "primaryKeys" : [ "id" ],
  "requiredColumns": ["id", "vehiclenum" ]
}