You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lens.apache.org by de...@apache.org on 2016/03/09 10:53:58 UTC

[4/5] lens git commit: LENS-971 : Lens UI module broken on 2.5 release build

LENS-971 : Lens UI module broken on 2.5 release build


Project: http://git-wip-us.apache.org/repos/asf/lens/repo
Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/e93f96a4
Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/e93f96a4
Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/e93f96a4

Branch: refs/heads/master
Commit: e93f96a4a9c2d0d389df01afb22fb03e4dfb61dc
Parents: b4253c0
Author: Ankeet Maini <an...@gmail.com>
Authored: Wed Mar 9 01:36:16 2016 +0530
Committer: Deepak Kumar Barr <de...@gmail.com>
Committed: Wed Mar 9 01:36:16 2016 +0530

----------------------------------------------------------------------
 lens-ui/app/actions/AdhocQueryActions.js        |  36 +++---
 lens-ui/app/adapters/AdhocQueryAdapter.js       | 111 ++++++++++---------
 lens-ui/app/adapters/BaseAdapter.js             |  44 ++------
 lens-ui/app/components/CubeSchemaComponent.js   |   4 +-
 .../components/QueryDetailResultComponent.js    |   2 +-
 .../app/components/QueryParamRowComponent.js    |   4 +-
 lens-ui/app/components/TableSchemaComponent.js  |   2 +-
 lens-ui/app/components/TableTreeComponent.js    |   2 +-
 lens-ui/app/stores/AdhocQueryStore.js           |  15 ++-
 lens-ui/app/stores/CubeStore.js                 |  14 ++-
 lens-ui/app/stores/DatabaseStore.js             |   5 +-
 lens-ui/app/stores/SavedQueryStore.js           |   6 +-
 lens-ui/app/stores/TableStore.js                |   8 +-
 lens-ui/app/stores/UserStore.js                 |   7 +-
 lens-ui/package.json                            |   2 +
 15 files changed, 129 insertions(+), 133 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lens/blob/e93f96a4/lens-ui/app/actions/AdhocQueryActions.js
----------------------------------------------------------------------
diff --git a/lens-ui/app/actions/AdhocQueryActions.js b/lens-ui/app/actions/AdhocQueryActions.js
index 284c781..2a4b47b 100644
--- a/lens-ui/app/actions/AdhocQueryActions.js
+++ b/lens-ui/app/actions/AdhocQueryActions.js
@@ -28,7 +28,9 @@ function _executeQuery (secretToken, query, queryName) {
     .then(queryHandle => {
       AppDispatcher.dispatch({
         actionType: AdhocQueryConstants.RECEIVE_QUERY_HANDLE,
-        payload: { queryHandle: queryHandle }
+        payload: { queryHandle: queryHandle.lensAPIResult &&
+          queryHandle.lensAPIResult.data &&
+          queryHandle.lensAPIResult.data.handleId }
       });
     }, (error) => {
       // error details contain array of objects {code, message}
@@ -51,11 +53,11 @@ function _saveQuery (secretToken, user, query, options) {
         payload: {
           type: 'Success',
           text: 'Query was successfully saved!',
-          id: response.id
+          id: response.resourceModifiedResponse && response.resourceModifiedResponse.id
         }
       });
     }, error => {
-      error = error.error;
+      error = error.lensAPIResult.error;
       AppDispatcher.dispatch({
         actionType: AdhocQueryConstants.SAVE_QUERY_FAILED,
         payload: {type: 'Error', text: error.code + ': ' + error.message}
@@ -123,7 +125,7 @@ let AdhocQueryActions = {
 
   updateSavedQuery (secretToken, user, query, options, id) {
     AdhocQueryAdapter.getParams(secretToken, query).then(response => {
-      let serverParams = response.parameters
+      let serverParams = response.parameterParserResponse.parameters
         .map(item => item.name)
         .sort();
       let clientParams = options && options.parameters && options.parameters
@@ -138,11 +140,11 @@ let AdhocQueryActions = {
               payload: {
                 type: 'Success',
                 text: 'Query was successfully updated!',
-                id: response.id
+                id: response.resourceModifiedResponse && response.resourceModifiedResponse.id
               }
             });
           }, error => {
-            error = error.error;
+            error = error.lensAPIResult.error;
             AppDispatcher.dispatch({
               actionType: AdhocQueryConstants.SAVE_QUERY_FAILED,
               payload: {type: 'Error', text: error.code + ': ' + error.message}
@@ -152,7 +154,7 @@ let AdhocQueryActions = {
         // get parameters' meta
         AppDispatcher.dispatch({
           actionType: AdhocQueryConstants.RECEIVE_QUERY_PARAMS_META,
-          payload: response.parameters
+          payload: response.parameterParserResponse.parameters
         });
       }
     });
@@ -160,7 +162,7 @@ let AdhocQueryActions = {
 
   saveQuery (secretToken, user, query, options) {
     AdhocQueryAdapter.getParams(secretToken, query).then(response => {
-      let serverParams = response.parameters
+      let serverParams = response.parameterParserResponse.parameters
         .map(item => item.name)
         .sort();
       let clientParams = options && options.parameters && options.parameters
@@ -173,7 +175,7 @@ let AdhocQueryActions = {
         // get parameters' meta
         AppDispatcher.dispatch({
           actionType: AdhocQueryConstants.RECEIVE_QUERY_PARAMS_META,
-          payload: response.parameters
+          payload: response.parameterParserResponse.parameters
         });
       }
     }, error => {
@@ -191,7 +193,7 @@ let AdhocQueryActions = {
   // as we can't run a query with params, it needs to be saved first.
   runQuery (secretToken, query, queryName) {
     AdhocQueryAdapter.getParams(secretToken, query).then(response => {
-      if (!response.parameters.length) {
+      if (!response.parameterParserResponse.parameters) {
         _executeQuery(secretToken, query, queryName);
       } else {
         // ask user to save the query maybe?
@@ -255,7 +257,7 @@ let AdhocQueryActions = {
       .then(function (query) {
         AppDispatcher.dispatch({
           actionType: AdhocQueryConstants.RECEIVE_QUERY,
-          payload: { query: query }
+          payload: { query: query.lensQuery }
         });
       }, function (error) {
         AppDispatcher.dispatch({
@@ -276,10 +278,9 @@ let AdhocQueryActions = {
           // persistent
           payload = { downloadURL: result, type: 'PERSISTENT', handle: handle };
         } else if (Object.prototype.toString.call(result).match('Array')) {
-          // in-memory gives array
           payload = {
-            queryResult: result[0],
-            columns: result[1],
+            queryResult: result[0].inMemoryQueryResult,
+            columns: result[1].queryResultSetMetadata,
             handle: handle,
             type: 'INMEMORY'
           };
@@ -349,14 +350,13 @@ let AdhocQueryActions = {
           payload: { queryHandle: handle }
         });
       }, (error) => {
-        // error response contains an error XML with code, message and
-        // stacktrace
+        error = error.lensAPIResult.error;
         AppDispatcher.dispatch({
           actionType: AdhocQueryConstants.RECEIVE_QUERY_HANDLE_FAILED,
           payload: {
             type: 'Error',
-            text: error.getElementsByTagName('code')[0].textContent + ': ' +
-              error.getElementsByTagName('message')[0].textContent
+            text: error.code + ': ' +
+              error.message
           }
         });
       });

http://git-wip-us.apache.org/repos/asf/lens/blob/e93f96a4/lens-ui/app/adapters/AdhocQueryAdapter.js
----------------------------------------------------------------------
diff --git a/lens-ui/app/adapters/AdhocQueryAdapter.js b/lens-ui/app/adapters/AdhocQueryAdapter.js
index 376068b..445d6f2 100644
--- a/lens-ui/app/adapters/AdhocQueryAdapter.js
+++ b/lens-ui/app/adapters/AdhocQueryAdapter.js
@@ -37,17 +37,17 @@ let urls = {
 let AdhocQueryAdapter = {
   getDatabases (secretToken) {
     let url = baseUrl + urls.getDatabases;
-    return BaseAdapter.get(url, { sessionid: secretToken });
+    return BaseAdapter.get(url + '?sessionid=' + secretToken);
   },
 
   getCubes (secretToken) {
     let url = baseUrl + urls.getCubes;
-    return BaseAdapter.get(url, { sessionid: secretToken });
+    return BaseAdapter.get(url + '?sessionid=' + secretToken);
   },
 
   getCubeDetails (secretToken, cubeName) {
     let url = baseUrl + urls.getCubes + '/' + cubeName;
-    return BaseAdapter.get(url, { sessionid: secretToken });
+    return BaseAdapter.get(url + '?sessionid=' + secretToken);
   },
 
   executeQuery (secretToken, query, queryName) {
@@ -56,66 +56,82 @@ let AdhocQueryAdapter = {
     let formData = new FormData();
     formData.append('sessionid', secretToken);
     formData.append('query', query);
-    formData.append('operation', 'execute');
+    formData.append('operation', 'EXECUTE');
+    formData.append('conf',
+      '<?xml version="1.0" encoding="UTF-8" standalone="yes"?><conf></conf>');
 
     if (queryName) formData.append('queryName', queryName);
 
     return BaseAdapter.post(url, formData, {
-      contentType: 'multipart/form-data'
+      headers: {
+        'Accept': 'application/json'
+      }
     });
   },
 
   saveQuery (secretToken, user, query, options) {
-    let url = baseUrl + urls.saveQuery;
     let queryToBeSaved = {
-      owner: user,
-      name: options.name || '',
-      query: query,
-      description: options.description || '',
-      parameters: options.parameters || []
+      savedQuery: {
+        name: options.name || '',
+        query: query,
+        description: options.description || '',
+        parameters: options.parameters || []
+      }
     };
-
-    return BaseAdapter.post(url, queryToBeSaved);
+    let url = baseUrl + urls.saveQuery + '?sessionid=' + secretToken;
+    return BaseAdapter.post(url, JSON.stringify(queryToBeSaved), {
+      headers: {
+        'Content-Type': 'application/json',
+        'Accept': 'application/json'
+      }
+    });
   },
 
   updateSavedQuery (secretToken, user, query, options, id) {
     let url = baseUrl + urls.saveQuery + '/' + id;
     let queryToBeSaved = {
-      owner: user,
-      name: options.name || '',
-      query: query,
-      description: options.description || '',
-      parameters: options.parameters || []
+      savedQuery: {
+        owner: user,
+        name: options.name || '',
+        query: query,
+        description: options.description || '',
+        parameters: options.parameters || []
+      }
     };
 
-    return BaseAdapter.put(url, queryToBeSaved);
+    return BaseAdapter.put(url, JSON.stringify(queryToBeSaved), {
+      headers: {
+        'Content-Type': 'application/json',
+        'Accept': 'application/json'
+      }
+    });
   },
 
   getQuery (secretToken, handle) {
     let url = baseUrl + urls.query + '/' + handle;
-    return BaseAdapter.get(url, {sessionid: secretToken});
+    return BaseAdapter.get(url + '?sessionid=' + secretToken);
   },
 
   getQueries (secretToken, email, options) {
-    let url = baseUrl + urls.query;
-
     let queryOptions = {};
     queryOptions.sessionid = secretToken;
     queryOptions.user = email;
-
+    var state;
     if (options && options.state) {
-      queryOptions.state = options.state.toUpperCase();
+      state = options.state.toUpperCase();
     }
-
-    return BaseAdapter.get(url, queryOptions)
+    let handlesUrl = baseUrl + urls.query + '?sessionid=' + secretToken + '&user=' +
+      email;
+    if (state) handlesUrl += '&state=' + state;
+    return BaseAdapter.get(handlesUrl)
       .then(function (queryHandles) {
         // FIXME limiting to 10 for now
         // let handles = queryHandles.slice(0, 10);
-        return Promise.all(queryHandles.map((handle) => {
-          return BaseAdapter.get(url + '/' + handle.handleId, {
-            sessionid: secretToken,
-            queryHandle: handle.handleId
-          });
+        return Promise.all(queryHandles.map((q) => {
+          let queryUrl = baseUrl + urls.query + '/' + q.queryHandle.handleId +
+            '?sessionid=' + secretToken + '&queryHandle=' + q.queryHandle.handleId;
+
+          return BaseAdapter.get(queryUrl);
         }));
       });
   },
@@ -142,15 +158,12 @@ let AdhocQueryAdapter = {
 
   getTables (secretToken, database) {
     let url = baseUrl + urls.getTables;
-    return BaseAdapter.get(url, {
-      sessionid: secretToken,
-      dbName: database
-    });
+    return BaseAdapter.get(url + '?sessionid=' + secretToken + '&dbName=' + database);
   },
 
   getTableDetails (secretToken, tableName, database) {
     let url = baseUrl + urls.getTables + '/' + database + '.' + tableName;
-    return BaseAdapter.get(url, { sessionid: secretToken });
+    return BaseAdapter.get(url + '?sessionid=' + secretToken);
   },
 
   cancelQuery (secretToken, handle) {
@@ -167,31 +180,25 @@ let AdhocQueryAdapter = {
 
   getSavedQueryById (secretToken, id) {
     let url = baseUrl + urls.saveQuery + '/' + id;
-    return BaseAdapter.get(url, {sessionid: secretToken});
+    return BaseAdapter.get(url + '?sessionid=' + secretToken);
   },
 
   getInMemoryResults (secretToken, handle) {
     let resultUrl = baseUrl + urls.query + '/' + handle + '/resultset';
-    let results = BaseAdapter.get(resultUrl, {
-      sessionid: secretToken
-    });
+    let results = BaseAdapter.get(resultUrl + '?sessionid=' + secretToken);
 
     let metaUrl = baseUrl + urls.query + '/' + handle + '/resultsetmetadata';
-    let meta = BaseAdapter.get(metaUrl, {
-      sessionid: secretToken
-    });
+    let meta = BaseAdapter.get(metaUrl + '?sessionid=' + secretToken);
 
     return Promise.all([results, meta]);
   },
 
   getSavedQueries (secretToken, user, options = {}) {
     let url = baseUrl + urls.getSavedQueries;
-    return BaseAdapter.get(url, {
-      user: user,
-      sessionid: secretToken,
-      start: options.offset || 0,
-      count: options.pageSize || 10
-    });
+    return BaseAdapter.get(
+      url + '?user=' + user + '&sessionid=' + secretToken + '&start=' +
+      (options.offset || 0) + '&count=' + (options.pageSize || 10)
+    );
   },
 
   getParams (secretToken, query) {
@@ -209,10 +216,10 @@ let AdhocQueryAdapter = {
 
     let formData = new FormData();
     formData.append('sessionid', secretToken);
+    formData.append('conf',
+      '<?xml version="1.0" encoding="UTF-8" standalone="yes"?><conf></conf>');
 
-    return BaseAdapter.post(url, formData, {
-      contentType: 'multipart/form-data'
-    });
+    return BaseAdapter.post(url, formData);
   }
 };
 

http://git-wip-us.apache.org/repos/asf/lens/blob/e93f96a4/lens-ui/app/adapters/BaseAdapter.js
----------------------------------------------------------------------
diff --git a/lens-ui/app/adapters/BaseAdapter.js b/lens-ui/app/adapters/BaseAdapter.js
index 634b974..abe3bcf 100644
--- a/lens-ui/app/adapters/BaseAdapter.js
+++ b/lens-ui/app/adapters/BaseAdapter.js
@@ -17,45 +17,17 @@
 * under the License.
 */
 
-import reqwest from 'qwest';
-import Promise from 'bluebird';
-
 import Config from 'config.json';
-import XMLAdapter from './XMLAdapter';
+import fetch from 'isomorphic-fetch';
 
 function makeReqwest (url, method, data, options = {}) {
-  let reqwestOptions = { headers: {}, timeout: 200000 }; // a large enough for native tables
-  if (Config.headers) reqwestOptions.headers = Config.headers;
-  reqwestOptions.responseType = !options.contentType ? 'json' : 'document';
-
-  if (reqwestOptions.responseType !== 'document') {
-    if (method === 'post' || method === 'put') reqwestOptions.dataType = 'json';
-  } else {
-    delete reqwestOptions.headers['Content-Type'];
-  }
-
-  return new Promise((resolve, reject) => {
-    reqwest[method](url, data, reqwestOptions)
-      .then((response) => {
-        response = reqwestOptions.responseType === 'json' ?
-          response.response :
-          XMLAdapter.stringToXML(response.response);
-
-        resolve(response);
-      }, (error) => {
-        let response = error.responseType !== 'json' ?
-          XMLAdapter.stringToXML(error.response) :
-          error.response;
-
-        if (!response) {
-          response = {
-            status: error.status,
-            statusText: error.statusText
-          };
-        }
-
-        reject(response);
-      }).catch(e => console.error(e));
+  return fetch(url, {
+    method: method,
+    body: data,
+    headers: options.headers
+  }).then(function (response) {
+    if (!response.ok) return response.json().then(e => Promise.reject(e));
+    return response.json();
   });
 }
 

http://git-wip-us.apache.org/repos/asf/lens/blob/e93f96a4/lens-ui/app/components/CubeSchemaComponent.js
----------------------------------------------------------------------
diff --git a/lens-ui/app/components/CubeSchemaComponent.js b/lens-ui/app/components/CubeSchemaComponent.js
index c56cb15..f56d9c2 100644
--- a/lens-ui/app/components/CubeSchemaComponent.js
+++ b/lens-ui/app/components/CubeSchemaComponent.js
@@ -33,7 +33,7 @@ function constructMeasureTable (cubeName, measures) {
     return (
       <tr key={cubeName + '|' + measure.name}>
         <td>{ measure.name }</td>
-        <td>{ measure.type }</td>
+        <td>{ measure._type }</td>
         <td>{ measure.default_aggr }</td>
         <td>{ measure.display_string }</td>
       </tr>
@@ -65,7 +65,7 @@ function constructDimensionTable (cubeName, dimensions) {
     return (
       <tr key={cubeName + '|' + dimension.name}>
         <td>{ dimension.name }</td>
-        <td>{ dimension.type }</td>
+        <td>{ dimension._type }</td>
         <td>{ dimension.ref_spec && dimension.ref_spec.chain_ref_column &&
           dimension.ref_spec.chain_ref_column.dest_table }</td>
         <td>{ dimension.ref_spec && dimension.ref_spec.chain_ref_column &&

http://git-wip-us.apache.org/repos/asf/lens/blob/e93f96a4/lens-ui/app/components/QueryDetailResultComponent.js
----------------------------------------------------------------------
diff --git a/lens-ui/app/components/QueryDetailResultComponent.js b/lens-ui/app/components/QueryDetailResultComponent.js
index 096adde..74aa900 100644
--- a/lens-ui/app/components/QueryDetailResultComponent.js
+++ b/lens-ui/app/components/QueryDetailResultComponent.js
@@ -53,7 +53,7 @@ function constructTable (tableData) {
   });
   let rows = tableData.results
     .map(row => {
-      return (<tr>{row.values.values.map(cell => {
+      return (<tr>{row.values.map(cell => {
         return <td>{(cell && cell.value) || <span style={{color: 'red'}}>NULL</span>}</td>;
       })}</tr>);
     });

http://git-wip-us.apache.org/repos/asf/lens/blob/e93f96a4/lens-ui/app/components/QueryParamRowComponent.js
----------------------------------------------------------------------
diff --git a/lens-ui/app/components/QueryParamRowComponent.js b/lens-ui/app/components/QueryParamRowComponent.js
index 89c8a8e..09f4f65 100644
--- a/lens-ui/app/components/QueryParamRowComponent.js
+++ b/lens-ui/app/components/QueryParamRowComponent.js
@@ -97,7 +97,7 @@ class QueryParamRow extends React.Component {
           break;
 
         case 'ChangeDefaultTextValue':
-          paramChange = _.assign({}, state, {defaultValue: arg.target.value});
+          paramChange = _.assign({}, state, {defaultValue: [arg.target.value]});
           break;
 
         case 'AddItemInMultiSelect':
@@ -111,7 +111,7 @@ class QueryParamRow extends React.Component {
           val = this.state.paramChange.collectionType === 'SINGLE' ? null : [];
           paramChange = _.assign({}, state, {
             dataType: arg.target.value,
-            defaultValue: val,
+            defaultValue: val
           });
           break;
 

http://git-wip-us.apache.org/repos/asf/lens/blob/e93f96a4/lens-ui/app/components/TableSchemaComponent.js
----------------------------------------------------------------------
diff --git a/lens-ui/app/components/TableSchemaComponent.js b/lens-ui/app/components/TableSchemaComponent.js
index 7abab95..6d52e00 100644
--- a/lens-ui/app/components/TableSchemaComponent.js
+++ b/lens-ui/app/components/TableSchemaComponent.js
@@ -87,7 +87,7 @@ class TableSchema extends React.Component {
                     return (
                       <tr key={this.state.table.name + '|' + col.name}>
                         <td>{col.name}</td>
-                        <td>{col.type}</td>
+                        <td>{col._type}</td>
                         <td>{col.comment || 'No description available'}</td>
                       </tr>
                     );

http://git-wip-us.apache.org/repos/asf/lens/blob/e93f96a4/lens-ui/app/components/TableTreeComponent.js
----------------------------------------------------------------------
diff --git a/lens-ui/app/components/TableTreeComponent.js b/lens-ui/app/components/TableTreeComponent.js
index 799dc9f..2e62399 100644
--- a/lens-ui/app/components/TableTreeComponent.js
+++ b/lens-ui/app/components/TableTreeComponent.js
@@ -130,7 +130,7 @@ class TableTree extends React.Component {
           {table.isLoaded ? table.columns.map(col => {
             return (
               <div className='treeNode' key={table.name + '|' + col.name}>
-                {col.name} ({col.type})
+                {col.name} ({col._type})
               </div>
             );
           }) : <Loader size='4px' margin='2px' />}

http://git-wip-us.apache.org/repos/asf/lens/blob/e93f96a4/lens-ui/app/stores/AdhocQueryStore.js
----------------------------------------------------------------------
diff --git a/lens-ui/app/stores/AdhocQueryStore.js b/lens-ui/app/stores/AdhocQueryStore.js
index 3f880bf..d8891c2 100644
--- a/lens-ui/app/stores/AdhocQueryStore.js
+++ b/lens-ui/app/stores/AdhocQueryStore.js
@@ -34,7 +34,13 @@ var adhocDetails = {
 };
 
 function receiveQueryHandle (payload) {
-  let id = payload.queryHandle.getElementsByTagName('handleId')[0].textContent;
+  if (typeof payload.queryHandle === 'string') {
+    adhocDetails.queryHandle = payload.queryHandle;
+    return;
+  }
+  let id = payload && payload.queryHandle && payload.queryHandle.lensAPIResult &&
+    payload.queryHandle.lensAPIResult.data &&
+    payload.queryHandle.lensAPIResult.data.handleId;
   adhocDetails.queryHandle = id;
 }
 
@@ -43,7 +49,7 @@ function receiveQueries (payload) {
   let queryObjects = {};
 
   queries.forEach((query) => {
-    queryObjects[query.queryHandle.handleId] = query;
+    queryObjects[query.lensQuery.queryHandle.handleId] = query.lensQuery;
   });
 
   adhocDetails.queries = queryObjects;
@@ -60,9 +66,8 @@ function receiveQueryResult (payload) {
 
   if (queryResult.type === 'INMEMORY') {
     let resultRows = payload.queryResult && payload.queryResult.rows &&
-      payload.queryResult.rows.rows || [];
-    let columns = payload.columns && payload.columns.columns &&
-      payload.columns.columns.columns;
+      payload.queryResult.rows || [];
+    let columns = payload.columns && payload.columns.columns;
 
     adhocDetails.queryResults[payload.handle] = {};
     adhocDetails.queryResults[payload.handle].results = resultRows;

http://git-wip-us.apache.org/repos/asf/lens/blob/e93f96a4/lens-ui/app/stores/CubeStore.js
----------------------------------------------------------------------
diff --git a/lens-ui/app/stores/CubeStore.js b/lens-ui/app/stores/CubeStore.js
index 09b469f..d4825a9 100644
--- a/lens-ui/app/stores/CubeStore.js
+++ b/lens-ui/app/stores/CubeStore.js
@@ -24,15 +24,17 @@ import { EventEmitter } from 'events';
 
 // private methods
 function receiveCubes (payload) {
-  payload.cubes.elements && payload.cubes.elements.forEach(cube => {
-    if (!cubes[cube]) {
-      cubes[cube] = { name: cube, isLoaded: false };
-    }
-  });
+  payload.cubes && payload.cubes.stringList &&
+    payload.cubes.stringList.elements &&
+    payload.cubes.stringList.elements.forEach(cube => {
+      if (!cubes[cube]) {
+        cubes[cube] = { name: cube, isLoaded: false };
+      }
+    });
 }
 
 function receiveCubeDetails (payload) {
-  let cubeDetails = payload.cubeDetails;
+  let cubeDetails = payload.cubeDetails && payload.cubeDetails.x_cube;
 
   let dimensions = cubeDetails.dim_attributes &&
     cubeDetails.dim_attributes.dim_attribute;

http://git-wip-us.apache.org/repos/asf/lens/blob/e93f96a4/lens-ui/app/stores/DatabaseStore.js
----------------------------------------------------------------------
diff --git a/lens-ui/app/stores/DatabaseStore.js b/lens-ui/app/stores/DatabaseStore.js
index 79894cf..b13246e 100644
--- a/lens-ui/app/stores/DatabaseStore.js
+++ b/lens-ui/app/stores/DatabaseStore.js
@@ -25,8 +25,9 @@ import { EventEmitter } from 'events';
 function receiveDatabases (payload) {
   databases = [];
 
-  databases = payload.databases.elements &&
-    payload.databases.elements.slice();
+  databases = payload.databases.stringList &&
+    payload.databases.stringList.elements &&
+    payload.databases.stringList.elements.slice();
 }
 
 let CHANGE_EVENT = 'change';

http://git-wip-us.apache.org/repos/asf/lens/blob/e93f96a4/lens-ui/app/stores/SavedQueryStore.js
----------------------------------------------------------------------
diff --git a/lens-ui/app/stores/SavedQueryStore.js b/lens-ui/app/stores/SavedQueryStore.js
index fb2869b..ef928f0 100644
--- a/lens-ui/app/stores/SavedQueryStore.js
+++ b/lens-ui/app/stores/SavedQueryStore.js
@@ -28,16 +28,16 @@ let totalRecords = 0;
 let CHANGE_EVENT = 'change';
 
 function receiveSavedQueries (payload) {
-  payload && payload.resoures.forEach(query => {
+  payload && payload.listResponse && payload.listResponse.resoures.forEach(query => {
     savedQueries[query.id] = query;
   });
 
-  totalRecords = payload && payload.totalCount;
+  totalRecords = payload.listResponse && payload.listResponse.totalCount;
 }
 
 function receiveSavedQuery (payload) {
   if (!savedQueries[payload.id]) totalRecords++;
-  savedQueries[payload.id] = payload;
+  savedQueries[payload.id] = payload.savedQuery;
 }
 
 let SavedQueryStore = assign({}, EventEmitter.prototype, {

http://git-wip-us.apache.org/repos/asf/lens/blob/e93f96a4/lens-ui/app/stores/TableStore.js
----------------------------------------------------------------------
diff --git a/lens-ui/app/stores/TableStore.js b/lens-ui/app/stores/TableStore.js
index 5ef84fa..0cec34a 100644
--- a/lens-ui/app/stores/TableStore.js
+++ b/lens-ui/app/stores/TableStore.js
@@ -30,8 +30,8 @@ function receiveTables (payload) {
     tableCompleteness[database] = true;
   }
 
-  payload.tables.elements &&
-    payload.tables.elements.forEach(table => {
+  payload.tables.stringList && payload.tables.stringList.elements &&
+    payload.tables.stringList.elements.forEach(table => {
       if (!tables[database][table]) {
         tables[database][table] = { name: table, isLoaded: false };
       }
@@ -39,7 +39,9 @@ function receiveTables (payload) {
 }
 
 function receiveTableDetails (payload) {
-  if (payload.tableDetails) {
+  if (payload.tableDetails && payload.tableDetails.x_native_table) {
+    // all table details are wrapped in `x_native_table` key, over-write
+    payload.tableDetails = payload.tableDetails.x_native_table;
     let database = payload.database;
     let name = payload.tableDetails.name;
     let table = assign({}, payload.tableDetails);

http://git-wip-us.apache.org/repos/asf/lens/blob/e93f96a4/lens-ui/app/stores/UserStore.js
----------------------------------------------------------------------
diff --git a/lens-ui/app/stores/UserStore.js b/lens-ui/app/stores/UserStore.js
index ee5506f..1d7e5d4 100644
--- a/lens-ui/app/stores/UserStore.js
+++ b/lens-ui/app/stores/UserStore.js
@@ -35,7 +35,12 @@ function authenticateUser (details) {
   userDetails = {
     isUserLoggedIn: true,
     email: details.email,
-    secretToken: new XMLSerializer().serializeToString(details.secretToken)
+    // creating the session string which is passed with every request
+    secretToken: `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+      <lensSessionHandle>
+        <publicId>${details.secretToken.lensSessionHandle.publicId}</publicId>
+        <secretId>${details.secretToken.lensSessionHandle.secretId}</secretId>
+      </lensSessionHandle>`
   };
 
   // store the details in localStorage if available

http://git-wip-us.apache.org/repos/asf/lens/blob/e93f96a4/lens-ui/package.json
----------------------------------------------------------------------
diff --git a/lens-ui/package.json b/lens-ui/package.json
index b21302b..0ed3db1 100644
--- a/lens-ui/package.json
+++ b/lens-ui/package.json
@@ -14,10 +14,12 @@
     "codemirror": "^5.3.0",
     "cookie-parser": "~1.3.5",
     "debug": "~2.2.0",
+    "es6-promise": "^3.1.2",
     "express": "~4.12.4",
     "express-session": "latest",
     "flux": "^2.0.3",
     "halogen": "^0.1.8",
+    "isomorphic-fetch": "^2.2.1",
     "keymirror": "^0.1.1",
     "lodash": "^3.9.1",
     "moment": "^2.10.3",