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 <[email protected]> Authored: Wed Mar 9 01:36:16 2016 +0530 Committer: Deepak Kumar Barr <[email protected]> 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",
